Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用maven时覆盖sonar projectKey_Maven_Sonarqube - Fatal编程技术网

使用maven时覆盖sonar projectKey

使用maven时覆盖sonar projectKey,maven,sonarqube,Maven,Sonarqube,我想在一个项目密钥下对25个模块进行分组,以便获得代码重复的整合视图。但是sonar maven插件使用了:,因此每个项目都是独立的 我已经尝试过重写声纳。项目密钥< /代码>,但是Maven插件不考虑它。 是否有一种方法可以在单个名称下将模块分组在一起,这样您就可以拥有聚合视图? 或者sonarqube服务器中是否有其他组件可以获取聚合视图?我有类似的设置,并使用多模块/聚合器项目来实现这一点 只需将包含模块的聚合器pom传递给声纳构建,它就会将所有模块组合在一起。分组名称取自聚合器工件属性(

我想在一个项目密钥下对25个模块进行分组,以便获得代码重复的整合视图。但是sonar maven插件使用了
,因此每个项目都是独立的

我已经尝试过重写<代码>声纳。项目密钥< /代码>,但是Maven插件不考虑它。

是否有一种方法可以在单个名称下将模块分组在一起,这样您就可以拥有聚合视图?
或者sonarqube服务器中是否有其他组件可以获取聚合视图?

我有类似的设置,并使用多模块/聚合器项目来实现这一点

只需将包含模块的聚合器pom传递给声纳构建,它就会将所有模块组合在一起。分组名称取自聚合器工件属性(可以由其名称属性覆盖)

。。。
聚合器项目
...
聚甲醛
组名超过了artifactId
我的项目
另一个项目

据我所知,与某些情况相反,至少在maven sonar插件的v3.2版本(可能更早)中,
sonar.projectKey
属性受到尊重,并覆盖了
${project.groupId}:${project.artifactId}
的默认值

检查源代码还可以确认它在默认属性之前首先查找属性

org.sonarsource.scanner.maven.bootstrap.MavenSonarRunner.java

private static void defineProjectKey(MavenProject pom, Properties props) {
  String key;
  if (pom.getModel().getProperties().containsKey(ScanProperties.PROJECT_KEY)) {
    key = pom.getModel().getProperties().getProperty(ScanProperties.PROJECT_KEY);
  } else {
    key = getSonarKey(pom);
  }
  props.setProperty(MODULE_KEY, key);
}

private static String getSonarKey(MavenProject pom) {
  return new StringBuilder().append(pom.getGroupId()).append(":").append(pom.getArtifactId()).toString();
}
org.sonasource.scanner.api.ScanProperties

String PROJECT_KEY = "sonar.projectKey";
例如,通过在POM中设置以下内容,可以覆盖projectKey:

<properties>
    <sonar.projectKey>myprefix:${project.groupId}:${project.artifactId}</sonar.projectKey>
</properties>

myprefix:${project.groupId}:${project.artifactId}
在Maven 3.3.9上测试。以防这对任何人都有帮助

链接到原始GitHub源:

为什么以与代码结构不一致的方式表示度量?通常,我看到给出的理由是“我们不想更改POM文件”,这在我看来是一个薄弱的论点。代码被构造成组成项目的模块。希望看到跨模块的代码复制是原因。这在部署到存储库时当然会中断,因为funky groupId和artifactId用于部署。
<properties>
    <sonar.projectKey>myprefix:${project.groupId}:${project.artifactId}</sonar.projectKey>
</properties>