gpt4 book ai didi

maven - Sonar maven插件: same project key for all modules does not work?

转载 作者:行者123 更新时间:2023-12-01 23:51:55 24 4
gpt4 key购买 nike

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

项目“...”不能有 2 个具有以下键的模块:...

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

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

最佳答案

自 SonarQube 7.6 起

模块已在最近的版本中删除。我还无法验证以下基于模块的解决方案是否适用于 SonarQube 8.x,但假设必须使用不同的解决方案。当我联系 SonarQube 支持人员时,他们建议管理项目 key 前缀的权限,并使用前缀范围的项目创建权限来动态创建共享该前缀的项目 key

在这种情况下,您的 pom.xml 将如下所示:

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

其中 YourKey 是项目前缀。 这需要您的 SonarQube 管理员应用建议的权限方案。

SonarQube 7.6 之前版本

7.6 之前的 SonarQube 具有模块感知能力。要在 parent.pom 中定义模块,请声明以下属性:

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

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

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

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

关于maven - Sonar maven插件: same project key for all modules does not work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43627759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com