McH*_*McH 6 maven sonarqube sonar-maven-plugin
我正在使用sonar-maven-plugin 3.2和maven 3.3.9.在父POM中,我定义了sonar.projectKey maven属性.该值已生效,我可以从声纳的打印输出中看到它.但是mvn声纳:声纳步骤失败,因为maven模块使用相同的项目键值,因为maven属性在所有模块中具有相同的值.声纳给出错误:
项目'...'不能有2个带以下密钥的模块:...
真的没有办法让一个包含所有maven模块的声纳项目吗?所有模块都必须是真正不同的声纳项目吗?
我知道我可以使用分支属性作为黑客,但我想避免这样做.如果有一种方法可以在声纳中使用单个项目键来包含maven多模块项目,包含所有maven模块,那将是最好的......
Ric*_*itz 25
模块已在最近的版本中删除。我还无法验证以下基于模块的解决方案是否适用于 SonarQube 8.x,但假设必须使用不同的解决方案。当我联系 SonarQube 支持时,他们建议管理项目密钥前缀的权限,并使用前缀范围的项目创建权限来动态创建共享该前缀的项目密钥。
在这种情况下,您pom.xml将如下所示:
<properties>
<sonar.projectKey>
YourKey-${project.groupId}:${project.artifactId}
</sonar.projectKey>
</properties>
Run Code Online (Sandbox Code Playgroud)
YourKey项目前缀在哪里。这需要您的 SonarQube 管理员应用建议的权限方案。
7.6 之前的 SonarQube 是/曾经是模块感知的。要在您的 中定义模块parent.pom,请声明以下属性:
<properties>
<sonar.projectKey>
YourKey
</sonar.projectKey>
<sonar.moduleKey>
${project.groupId}:${project.artifactId}
</sonar.moduleKey>
</properties>
Run Code Online (Sandbox Code Playgroud)
这两个属性都将由您的模块继承。然后,这会将结果编译成单个 Sonar 报告,跟踪 common 下的子模块projectKey。有趣的是,结果是:
[INFO] Reactor Summary:
[INFO]
[INFO] parent ................................. SUCCESS [01:14 min]
[INFO] module1................................. SKIPPED
[INFO] module2 ................................ SKIPPED
[INFO] module3 ................................ SKIPPED
Run Code Online (Sandbox Code Playgroud)
因此,我不确定确切的模块分辨率是如何完成的,但最终所有模块都出现在报告中。
sonar.projectKey
每个项目唯一的项目键.允许的字符是:字母,数字,' - ','_','.' 和':',至少有一个非数字.
使用Maven时,它会自动设置为<groupId>:<artifactId>.
因此,删除您的sonar.projectKey配置,它应该工作.
(我经历了同样的循环).
| 归档时间: |
|
| 查看次数: |
5486 次 |
| 最近记录: |