【发布时间】:2014-02-07 16:45:14
【问题描述】:
我正在运行 Jacoco 的 Maven 插件。 prepare-agent 目标运行良好,但由于某种原因没有生成 jacoco.exec 文件。随后report目标抱怨Skipping JaCoCo execution due to missing execution data file。
有什么想法吗?
【问题讨论】:
我正在运行 Jacoco 的 Maven 插件。 prepare-agent 目标运行良好,但由于某种原因没有生成 jacoco.exec 文件。随后report目标抱怨Skipping JaCoCo execution due to missing execution data file。
有什么想法吗?
【问题讨论】:
阅读了https://groups.google.com/forum/#!topic/jacoco/LzmCezW8VKA,事实证明prepare-agent 设置了一个名为argLine 的万无一失的属性。如果您覆盖此属性(https://issues.apache.org/jira/browse/SUREFIRE-951 鼓励您这样做),那么 jacoco 永远不会运行。
解决办法是替换:
<argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine>
与
<argLine>-Dfile.encoding=${project.build.sourceEncoding} ${argLine}</argLine>
意思是,将 jacoco 的 argLine 附加到新值。
更新:正如Fodder 所指出的,如果您并不总是运行JaCoCo 并且没有其他插件集${argLine},那么Maven 将抱怨${argLine} 未定义。要解决此问题,只需定义跳过 JaCoCo 时 ${argLine} 的外观:
<properties>
<argLine/>
</properties>
在这种情况下,请使用 @{argLine} 而不是 ${argLine},如 here 所述。
【讨论】:
如果您在构建时并不总是运行 JaCoCo,那么 @Gili 的解决方案将不起作用,因为它找不到 argLine。而是在您的 POM 中使用自定义值添加属性 argLine。 JaCoCo 的准备代理将附加到该属性,而 Surefire 将使用附加的 argLine。
<properties>
<argLine>whatever your custom argline variables are</argLine>
</properties>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!-- Don't put argLine config here! -->
</plugin>
</plugins>
【讨论】: