【发布时间】:2016-07-18 05:14:12
【问题描述】:
我们有一个 Maven 多模块项目,由一个父 (HelloWorld) 和不同的子 (HelloWorldServices 和 HelloWorldPresentation) 组成,并使用 Jenkins 来构建。
运行测试成功后的错误是
[INFO] --- jacoco-maven-plugin:0.7.6.201602180812:report (default-cli) @ HelloWorldServices ---
[INFO] Skipping JaCoCo execution due to missing execution data file:/var/lib/jenkins/workspace/HelloWorld/HelloWorldServices/target/jacoco.exec
前面几行
[INFO] --- jacoco-maven-plugin:0.7.6.201602180812:prepare-agent (default-cli) @ HelloWorldServices ---
[INFO] argLine set to -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.6.201602180812/org.jacoco.agent-0.7.6.201602180812-runtime.jar=destfile=/var/lib/jenkins/workspace/HelloWorld/HelloWorldServices/target/jacoco.exec
这就是我定义父 pom JaCoCo 插件的方式:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.6.201602180812</version>
<configuration>
<destfile>${project.artifactId}/target/jacoco.exec</destfile>
<datafile>${project.artifactId}/target/jacoco.exec</datafile>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
我在任何 pom 中都没有明确提到过万无一失。我还尝试了您在任何地方都能找到的将 argLine 放入配置的方法,但结果都相同。 JaCoCo .exec 文件从未被创建,无论我做什么。至于目标,我使用
mvn clean install jacoco:prepare-agent jacoco:report
因为当我省略 jacoco 目标时,它甚至不显示 INFO 消息。
【问题讨论】:
-
改用
mvn clean jacoco:prepare-agent install(两个阶段之间的代理) -
几天前我遇到了同样的问题,就我而言,问题是我没有遵循命名约定。测试文件应命名为 *Test.java。一旦我遵循命名约定,问题就消失了。
-
一个非常 good answer 为我解决了问题。
标签: java maven maven-3 pom.xml jacoco-maven-plugin