jacoco的prepare-agent没有生成jacoco.exec文件

时间:2014-02-07 16:45:15

标签: maven jacoco

我正在运行Jacoco的Maven插件。 prepare-agent目标运行正常,但由于某种原因不会生成jacoco.exec目标。随后report目标投诉Skipping JaCoCo execution due to missing execution data file

有什么想法吗?

2 个答案:

答案 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>