gradle - Jenkins jacoco插件-Java8仪表板报告已消失

标签 gradle java-8 code-coverage jenkins-plugins jacoco

我正在使用的大多数项目在Java7上使用了Gradle 1.6到2.3,并且在Jacoco中进行了代码覆盖。

Jenkins版本是:1.565.3和1.618(我有两个实例)
Jenkins的Jacoco插件版本:1.0.12

Gradle版本:2.3
Gradle的Jacoco插件版本:0.7.2.201409121644

现在,在Gradle中,有一个jacoco插件(提供jacocoTestReport任务),在Jenkins中,有一个Jacoco插件,它读取通过运行各种测试生成的exec文件,并在Jenkins作业的仪表板上显示报告。

如果我将Java 8与Gradle 2.0一起使用,直到2.3版本,现在不会显示这些报告。 Jenkins Jobs成功地在Jacoco上构建并运行了分析,但是报告不见了。

您是否看到过此问题?

如果您看到此内容,则表明Coverage已消失,而对于最新的构建,所有内容都是红色/没有Coverage。

主仪表板:

Jacoco插件报告(如果在工作上单击以上报告):

注意:

  • 我有有效的.exec文件,如果我使用Gradle的jacocoTestReport任务生成HTML格式的覆盖率,则该文件将显示有效的代码覆盖率,但Jacoco插件仪表板报告未显示任何内容(仅显示 header ,而没有数据/完全没有覆盖率) 。
  • 当我使用Java7时,Jenkins中的jacocoTestReport和Jacoco插件生成的报告生成了有效的输出。

  • Graddle的jacocoTestReport 任务使用相同的.exec文件生成的报告显示,我拥有的jacoco * .exec文件是有效的。

    最佳答案

    我找出了Java 8项目未显示代码覆盖率的原因。

    这是因为Jenkins的 Jacoco插件的版本不兼容,该版本仅在您的Jenkins实例中与Java7一起使用。尝试将Jenkins中的Jacoco插件更新为最新版本(1.0.15+)。

    1.0.15版本提供了对Java 8的支持。 Jacoco插件发行说明

    版本1.0.15(2014年6月11日)
    •修复[JENKINS-20440]检查器问题
    •修复[JENKINS-22716]-更新到JaCoCo 0.7.x以支持Java 8
    •修复#40-项目仪表板图表的数据被截断

    因此,需要在您的Jenkins中升级jacoco插件。

    另外,请参见此处的版本信息/发行信息:https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin

    您会注意到(此时)有一条警告消息,该消息可能会在以后的版本中(几天之内)得到解决。

    不幸的是,JaCoCo 0.7.5破坏了与jacoco.exec文件以前的二进制格式的兼容性,JaCoCo插件当前基于JaCoCo 0.7.4,因此您不能将此插件与已经使用JaCoCo 0.7.5或更高版本的项目一起使用。直到0.7.4或更低,直到插件更新

    关于gradle - Jenkins jacoco插件-Java8仪表板报告已消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31433938/

    相关文章:

    android - 无法使用 “google-play-services”编译我的Android应用

    eclipse - 从 ant + ivy 迁移到 gradle

    java - 在mavenLocal()中为.jar文件成功添加gradle依赖关系之后,我如何实际从Java类导入和使用该jar

    android - 使用 gradle 从 android 测试到 Sonar 的代码覆盖率

    java - 为什么 Java 8 不允许非公共(public)默认方法?

    java - 从输入流读取有限长度的最佳实践

    javascript - JDK 1.8.0_92 Nashorn JS 引擎 indexOf 行为

    javascript - 无法使用 nyc/istanbul 进行代码覆盖

    java - 使用Jacoco或IntelliJ IDEA生成单独的覆盖率报告以进行测试

    unit-testing - 在 VS2010 代码覆盖结果中识别哪些测试提供覆盖