Sonar Maven插件:所有模块的同一项目密钥都不起作用



我使用的是Sonar-Maven-Plugin 3.2和Maven 3.3.9。在父pom中,我定义了Sonar.projectkey maven属性。价值有效,我可以从声纳的打印量中看到它。但是MVN声纳:声纳步骤失败,因为Maven模块使用相同的项目密钥值,因为Maven属性在所有模块中均具有相同的值。Sonar给出了错误:

项目'...'不能有2个模块,具有以下键:...

真的没有办法拥有一个包含所有Maven模块的单个声纳项目?所有模块都必须是真正不同的声纳项目吗?

我知道我可以使用分支属性ASA Hack,但我想避免这样做。如果有一种方法可以在Sonar中使用一个MAVEN多模块项目,其中包含所有Maven模块,那将是最好的...

自Sonarqube 7.6

以来

在最近的版本中已删除了模块。我无法验证以下基于模块的解决方案在Sonarqube 8.X上工作,但假设必须使用其他解决方案。当我联系Sonarqube支持时,他们建议管理项目密钥前缀的权限,并使用前缀Scoped项目创建权限动态创建项目键共享该前缀

在这种情况下,您的pom.xml看起来像这样:

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

其中 YourKey是项目 - 冠军。这要求您的Sonarqube管理员应用建议的许可计划。

Pre Sonarqube 7.6

Sonarqube在7.6之前是/是模块化的。要在parent.pom中定义模块,您可以声明以下属性:

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

这两个属性将由您的模块继承。然后,这将将结果编译到单个声纳报告中,并跟踪公共projectKey下的子模块。有趣的结果是:

[INFO] Reactor Summary:
[INFO] 
[INFO] parent ................................. SUCCESS [01:14 min]
[INFO] module1................................. SKIPPED
[INFO] module2 ................................ SKIPPED
[INFO] module3 ................................ SKIPPED

因此,我不确定如何完成确切的模块分辨率,但最终显示了报告中的所有模块。

根据Sonarqube分析参数:

sonar.projectkey

每个项目唯一的项目密钥。允许的字符是:字母,数字,' - ','_','。和':',至少有一个非数字。
使用Maven时,它会自动设置为<groupId>:<artifactId>

因此,删除您的sonar.projectKey配置,它应该可以工作。

(我经历了相同的循环(。

必须有一种唯一识别每个组件的方法。正如史蒂夫·C(Steve C(所说,您不能有两个带有相同项目密钥的项目。在项目中,模块还必须具有唯一的标识符。否则,对第二个"模块B"的分析将覆盖第一个"模块B"。

最新更新