我想在一个项目密钥下对25个模块进行分组,这样我就可以获得代码重复的统一视图。但是,声纳maven插件使用<groupId>:<artifactId>
,因此每个项目都是独立的。
我已尝试覆盖sonar.projectKey
,但maven插件不考虑它。
有没有办法在单个名称下将模块组合在一起,以便您可以拥有聚合视图? 或者在sonarqube服务器中还有其他一些来获取聚合视图吗?
答案 0 :(得分:5)
据我所知,与某些other forum posts相反,至少使用maven-sonar-plugin的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.sonarsource.scanner.api.ScanProperties 强>
String PROJECT_KEY = "sonar.projectKey";
例如,通过在POM中设置以下内容,可以覆盖projectKey:
<properties>
<sonar.projectKey>myprefix:${project.groupId}:${project.artifactId}</sonar.projectKey>
</properties>
在Maven 3.3.9上测试。如果这有助于任何人!
答案 1 :(得分:0)
我有类似的设置,并为http://maven.apache.org/pom.html#Aggregation使用多模块/聚合器项目。
只需将包含模块的聚合器pom传递给声纳构建,它应该将所有模块组合在一起。分组名称取自聚合器工件属性(可以通过其name-property覆盖)。
<groupId>...</groupId>
<artifactId>aggregator-project</artifactId>
<version>...</version>
<packaging>pom</packaging>
<name>Group name overrites artifactId</name>
<modules>
<module>my-project</module>
<module>another-project</module>
</modules>