Jacoco代码覆盖率报告显示Jenkins的0覆盖范围

时间:2017-09-22 12:11:25

标签: maven jenkins code-coverage jacoco jacoco-maven-plugin

Jacoco插件在jenkins报告中显示0%的覆盖率,但当我在本地系统中运行相同的命令时,jacoco正确生成报告。我正在使用以下命令:

  

mvn -s xyz / settings.xml -f xyz / xyz / pom.xml clean install org.jacoco:jacoco-maven-plugin:report-aggregate

所以当我在jenkins中运行此命令时,它会生成错误的报告。我已经在WorkSpace目录中为jenkins中的相应项目编写了它。它显示每个项目的0%覆盖率。但是当我在本地系统中运行相同的maven命令时,jacoco-maven会生成正确的覆盖率报告。我可以看到它们,因为它们是HTML格式。

我的pom.xml用maven运行jacoco:

<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>

我正在使用以下工具:

jacoco-maven-plugin version 0.7.7
jenkins-jacoco-plugin version 2.0.1
apache-maven version 3.5.0

这也是我的jenkins控制台日志,我在maven命令完成后得到了这个日志。

[JaCoCo plugin] Collecting JaCoCo coverage data...
[JaCoCo plugin] **/**.exec;**/target/classes;**/src; locations are configured
[JaCoCo plugin] Number of found exec files for pattern **/**.exec: 0
[JaCoCo plugin] Saving matched execfiles:  
[JaCoCo plugin] Saving matched class directories for class-pattern: **/target/classes:
<<<<<<Classes folders list for all project>>>>>>>>
[JaCoCo plugin] Loading inclusions files..
[JaCoCo plugin] inclusions: []
[JaCoCo plugin] exclusions: []
[JaCoCo plugin] Thresholds: JacocoHealthReportThresholds [minClass=0, maxClass=0, minMethod=0, maxMethod=0, minLine=0, maxLine=0, minBranch=0, maxBranch=0, minInstruction=0, maxInstruction=0, minComplexity=0, maxComplexity=0]
[JaCoCo plugin] Publishing the results..
[JaCoCo plugin] Loading packages..
[JaCoCo plugin] Done.
[JaCoCo plugin] Overall coverage: class: 0, method: 0, line: 0, branch: 0, instruction: 0
Finished: SUCCESS

以下是我对jacoco报告的jenkins设置:

enter image description here

这是目标目录的文件夹结构。

enter image description here

目标目录存在于项目目录下。

所以我真正担心的是为什么在jenkins上这些文件,即覆盖文件没有正确生成,而本地系统中的相同命令会生成正确的覆盖率报告。

感谢。

P.S。 : - 我在多模块环境中这样做,我的源文件存在于一个项目中,测试文件在另一个项目中可用。 因此,对于每个源项目都存在一个测试项目。 还有一点我注意到在运行maven命令后, 类文件是在源的/ target / classes目录下创建的,而报告的html文件是在测试项目的/ target / site目录下生成的。我不确定为什么会这样。

1 个答案:

答案 0 :(得分:0)

我找到了我错过的一段代码,因为报告没有在jenkins中生成。

我忘了在父pom.xml的标签内添加jacoco-maven-plugin。 我只在里面添加了它

: - )