2016-09-23 22 views
0

我已将JaCoCo插件添加到我的Maven插件,并且可以在本地成功生成覆盖率报告。org.jacoco.maven.AgentMojo无法获取类--Jenkins无法使用JaCoCo maven插件构建,但在本地工作

但是经过我的COMMITED改变pom.xmlJenkins尝试建立Maven项目(由多个模块)构建失败,输出是这样的:

[HUDSON] Collecting dependencies info 
[HUDSON] Collecting dependencies info 
[HUDSON] Collecting dependencies info 
[HUDSON] Collecting dependencies info 
[JENKINS] Recording test results 
[WARNING] Failed to getClass for org.jacoco.maven.AgentMojo 
[JENKINS] Archiving /var/lib/jenkins/jobs/xy xyz1 
[JENKINS] Archiving /var/lib/jenkins/jobs/xy xyz2 
[JENKINS] Archiving /var/lib/jenkins/jobs/xy xyz3 
[JENKINS] Archiving /var/lib/jenkins/jobs/xy xyz4 
channel stopped 
Finished: FAILURE 

我得到的唯一的警告是Failed to getClass for org.jacoco.maven.AgentMojo所以我认为这可能会导致构建失败。

首先,我认为这是因为代理设置,但我已经在Jenkins构建中添加了相同的settings.xml,因为我在本地使用该插件(成功使用该插件)。

此外,我试图在几个地方查找这个具体的错误,没有运气。

也试图改变POM处决,但由于它的工作地方我觉得有改变以下Maven pom.xml的设置没有理由:

 <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>post-unit-test</id> 
        <phase>test</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

为什么詹金斯不记录任何更多的错误不止这么简单[WARNING]行?

可能是什么原因Jenkins未能成功getClass而本地Maven构建成功运行?

我可以在没有将maven插件添加到xml的情况下获得JaCoCo覆盖范围吗? (从我发现它需要添加到工作Jenkins插件)

+0

您是否尝试过使用DEBUG选项运行Maven?简单地将'-X'添加到作业的命令行中:例如:'-X clean install'。你会得到更多的追踪到输出控制台。 –

+0

我已经设置了'-X -e',但没有更多的输出。其他东西一定是错误地设置的,但不能确定究竟是什么。 – abbath

回答

0

我使用詹金斯JaCoCo插件来做到这一点。你只需要指定你的java src文件,.class文件和测试类的位置。该插件还使得能够从Jenkins界面访问html报告输出。

+0

你不需要一个jacoco.exec吗? – abbath

+0

对不起,我没有看到你想避免的XML部分。我将你的代码与我的代码进行了比较,发现唯一的区别是你没有在JaCoCo配置中提供准备代理目标。 – cagrias

+0

我确实提供了“准备代理”的目标,这就是詹金斯最有可能失败的地方。 – abbath

0

对我来说,可疑的一点是,您已将report目标附加到test阶段,这似乎是错误的:测试覆盖的报告在执行测试之前无法完成,因此您必须选择另一个下一阶段。例如,verify阶段(这是report目标的默认阶段)。

+0

我已将其更改为默认值,但不幸的是相同的输出 – abbath