[英]Sonar maven jacoco code coverage for Multimodule project
我有一个多模块项目,其中包含一个父 pom.xml 和两个模块。 Project.jar 和 Project.war。 所有的测试用例都在 Project.jar 下。 当我在父 pom 上运行 mvn sonar.sonar 目标时,jacoco.exec 没有生成并且代码覆盖率是空白的。 我在父 pom.xml 中有以下属性。
<properties>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${project.basedir}/target/jacoco.exec</sonar.jacoco.reportPath>
</properties>
请帮忙。 我正在使用 Sonarqube 4.2。
使用 Java 插件的 2.4 版,您必须在运行 SonarQube 分析之前生成覆盖率报告。 你可以看到这个页面https://github.com/SonarSource/sonar-jacoco关于如何做到这一点。
对于那些有类似问题的人,我稍微不同地解决了这个问题(我从命令行运行它而不是让 Jenkins 这样做)。 我的插件没有问题。
所有这些设置都在父 POM 中定义。 我正在使用以下版本:
<plugin.jacoco.version>0.7.2.201409121644</plugin.jacoco.version>
报告路径略有不同,因此只创建了一个 jacoco.exec。 默认情况下,如果文件已经存在,Sonar 会将结果附加在一起。
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
在 pluginManagement 部分,我有以下插件:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${plugin.jacoco.version}</version>
<configuration>
<destFile>${sonar.jacoco.reportPath}</destFile>
</configuration>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
然后在我的插件部分,我确保该插件可用于整个项目:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
正如 benzonico 所指出的,您需要在声纳分析它们之前运行测试,我的操作如下:
mvn clean test sonar:sonar
我不必对 Surefire 插件进行任何更改(就像我过去所做的那样)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.