Sonar maven插件:所有模块的相同项目密钥不起作用?

时间:2017-04-26 07:33:35

标签: maven sonarqube sonar-maven-plugin

我正在使用sonar-maven-plugin 3.2和maven 3.3.9。在父POM中,我定义了sonar.projectKey maven属性。该值已生效,我可以从声纳的打印输出中看到它。但是mvn声纳:声纳步骤失败,因为maven模块使用相同的项目键值,因为maven属性在所有模块中具有相同的值。声纳给出错误:

项目'...'不能有2个带有以下密钥的模块:...

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

我知道我可以将分支属性用作hack,但我想避免这样做。如果有一种方法可以在声纳中使用包含所有maven模块的单个项目密钥进行maven多模块项目,那将是最好的......

3 个答案:

答案 0 :(得分:5)

根据SonarQube Analysis Parameters

  

sonar.projectKey

     

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

因此,请删除sonar.projectKey配置,它应该有效。

(我经历了同样的循环)。

答案 1 :(得分:1)

我想我终于找到了执行此操作的正确方法。在parent.pom中,声明以下属性:

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

这两个属性都将由您的模块继承。然后,这会将结果编译为单个Sonar报告,从而跟踪公共projectKey下的子模块。 有趣的是,结果是:

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

因此,我不确定确切的模块解析是如何完成的,但最终所有模块都显示在报告中。

答案 2 :(得分:0)

必须有一种方法来唯一识别每个组件。正如Steve C所说,你不能拥有两个具有相同项目密钥的项目。在项目中,模块还必须具有唯一标识符。否则,分析第二个&#34;模块b&#34;将覆盖第一个&#34;模块b&#34;。

相关问题