我正在运行Jacoco的Maven插件。 prepare-agent
目标运行正常,但由于某种原因不会生成jacoco.exec
目标。随后report
目标投诉Skipping JaCoCo execution due to missing execution data file
。
有什么想法吗?
答案 0 :(得分:32)
阅读https://groups.google.com/forum/#!topic/jacoco/LzmCezW8VKA后,prepare-agent
设置了一个名为argLine
的surefire属性。如果您覆盖此属性(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所述。
答案 1 :(得分:1)
如果您在构建时并不总是运行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>