我使用声纳-maven-插件3.2和maven 3.3.9。在父POM中,我定义了sonar.projectKey maven属性。这个值是有效的,我可以从声纳的打印输出中看到它。但是mvn sonar: sonar步骤失败,因为maven模块使用相同的项目键值,因为maven属性在所有模块中具有相同的值。声纳给出了错误:
项目“…”不能有具有以下键的2个模块:。。。
真的没有办法让一个声纳项目包含所有maven模块吗?所有模块都必须是真正不同的声纳项目吗?
我知道我可以将分支属性用作黑客,但我希望避免这样做。如果有一种方法可以在sonar中使用一个包含所有maven模块的单一项目密钥来创建一个maven多模块项目,那将是最好的。。。
必须有一种唯一标识每个组件的方法。正如Steve C所说,不能有两个项目具有相同的项目密钥。在项目中,模块还必须具有唯一标识符。否则,对第二个“模块b”的分析将覆盖第一个“模块b”。
根据SonarQube分析参数:
声纳。项目密钥
每个项目唯一的项目密钥。允许的字符有:字母、数字、'-'、''、'.'和“:”,至少有一个非数字
使用Maven时,它会自动设置为
因此,删除您的
sonar.projectKey
配置,它应该可以工作。
(我也经历过同样的循环)。
模块已在最近的版本中删除。我还无法验证以下基于模块的解决方案是否适用于Sonarqube8。x、 但假设必须使用不同的解决方案。当我联系SonarQube支持部门时,他们建议管理项目密钥前缀的权限,并使用前缀范围的项目创建权限动态创建共享该前缀的项目密钥。
在本例中,您的pom。xml
将如下所示:
<properties>
<sonar.projectKey>
YourKey-${project.groupId}:${project.artifactId}
</sonar.projectKey>
</properties>
其中YourKey
是project前缀。这需要SonarQube管理员应用建议的权限方案。
7.6之前的SonarQube是/是模块感知的。在父级中定义模块。pom,您可以声明以下属性:
<properties>
<sonar.projectKey>
YourKey
</sonar.projectKey>
<sonar.moduleKey>
${project.groupId}:${project.artifactId}
</sonar.moduleKey>
</properties>
这两个属性都将由模块继承。然后,这将把结果编译成一个声纳报告,跟踪公共project ectKey
下的子模块。有趣的是结果是:
[INFO] Reactor Summary:
[INFO]
[INFO] parent ................................. SUCCESS [01:14 min]
[INFO] module1................................. SKIPPED
[INFO] module2 ................................ SKIPPED
[INFO] module3 ................................ SKIPPED
因此,我不确定确切的模块分辨率是如何完成的,但最终所有模块都出现在报告中。
我有一个基于java和kotlin的多模块gradle项目。我正在尝试设置声纳分析。我在根项目中配置了sonar,并用CircleCI进行了分析。sonarcloud中的结果仅适用于其中一个子项目。 我的项目结构如下: 项目A/构建。格拉德尔 项目B/构建。格拉德尔 ProjectC/build。格拉德尔 建造。格拉德尔 这是我的根构建。格雷德尔。
parent-child1-pom.xml-child2-pom.xml-child3-pom.xml-pom.xml 我在父pom.xml中包含了JaCoCo插件。当我从父级pom.xml运行mvn clean install sonar:sonar build时,我看到每个子级都生成自己的jacoco.exec文件。类似于child1/target/jacoco.exec,child2/tar
我有一个父pom和两个子pom,用于jar和war文件。war文件将jar文件作为pom中的依赖项。因此,构建顺序定义如下 家长 儿童罐 儿童战争 在父pom中,模块如下所示。 要部署到Jboss的最后一个工件位于父/工作区/子war/目标/项目文件夹下。战争 当我从父工作区文件夹调用maven目标时,部署失败。 mvn清理编译安装jboss为:deploy-Dmaven。测验跳过=真 我尝试在父
问题内容: 我们有一个与我们一起工作的人,他使用maven-assembly- plugin打包所有依赖项。从那以后他就离开了公司,我正在努力弄清楚他是如何做到的。我现在正在学习有关maven-assembly-plugin的信息。 我们的应用程序分为与相关模块项目一起的Maven POM项目。在下面的示例中,我包含了运行时模块项目。我试图在我的应用程序中创建一个名为运行时的模块项目,但是一旦进行
问题内容: 我想与Jenkins一起针对Maven 2项目启动SonarQube分析。我首先在构建配置中使用了目标。 但是我刚刚找到了Jenkins的SonarQube插件。为什么要使用它?这是更好的做法,为什么? 问题答案: 您当然可以做一个简单的,这将起作用。 另一方面,还有用于Jenkins的SonarQube插件,它将使配置更加容易。例如,您将能够在一个位置(Jenkins的配置部分)定义
我想在eclipse下处理同一个多模块maven项目的两个不同版本。 不幸的是,当您在eclipse下导入多模块maven项目时,您可以自己更改父模块项目名称以防止冲突,但不能更改子模块项目名称。子模块作为根项目导入,以模块名称命名。显然在导入过程中无法重命名它们。 在理想情况下,我希望保持pom不变。显然,我希望保持相同的eclipse工作区。。。