在SonarQube +报告中未显示的相关模块中的汇总覆盖范围或覆盖范围由Jacoco生成

JIT*_*HIN 7 java jenkins eclemma sonarqube jacoco-maven-plugin

我正在运行jacoco插件来生成html,xml并jacoco.exec报告以测量我的testNg测试所测试的代码的覆盖范围.

我在本地和以及Jenkins我的所有单元测试结果中成功生成了这些报告,Sonar并且它向我展示了覆盖范围.

jacoco.exec的模块和依赖模块的覆盖率都有.我已经验证了这个eclemma plugin用于eclipse.

我没有在Sonar的依赖模块中获得覆盖结果.任何一个我做错了.

我的插件就是这样的

<plugin>
 <groupId>org.jacoco</groupId>
 <artifactId>jacoco-maven-plugin</artifactId>
 <version>0.7.7.201606060606</version>
 <executions>
    <execution>
        <goals>
            <goal>prepare-agent</goal>
        </goals>
    </execution>
    <execution>
        <id>report</id>
        <phase>prepare-package</phase>
        <goals>
            <goal>report</goal>
        </goals>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我的目标是 jacoco:report-aggregate

JIT*_*HIN 1

我从多模块中的 jacoco 插件覆盖率得到了答案

以下是我犯的错误,这些错误给我带来了问题。在我们的pom的属性中

 <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
Run Code Online (Sandbox Code Playgroud)

并在插件中

 <destFile>${sonar.jacoco.reportPath}</destFile>
Run Code Online (Sandbox Code Playgroud)

对我来说,由于 Maven 模块层次结构的差异,上述语句刷新了jacoco.exec不同的文件夹,因此它们从未聚合。

compile time dependency第二点是,只有当它是测试模块时,才会获得依赖模块覆盖率。