【问题标题】:jacoco's prepare-agent not generating jacoco.exec filejacoco 的准备代理不生成 jacoco.exec 文件
【发布时间】:2014-02-07 16:45:14
【问题描述】:

我正在运行 Jacoco 的 Maven 插件。 prepare-agent 目标运行良好,但由于某种原因没有生成 jacoco.exec 文件。随后report目标抱怨Skipping JaCoCo execution due to missing execution data file

有什么想法吗?

【问题讨论】:

    标签: maven jacoco


    【解决方案1】:

    阅读了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 所述。

    【讨论】:

    • 我要补充一点,只有在您更改了 surefire 插件的 argLine 配置时才需要它。否则默认配置就OK了。
    • 如果您使用 Tycho(用于 Eclipse 插件和应用程序),请使用 ${tycho.testArgLine} 而不是 ${argLine}。
    • 伙计,你是救命稻草。花了一整天的时间和 jacoco 打架——它无法生成 exec 文件,而且 surefire 没有特殊的参数。添加 使一切正常。谢谢!
    【解决方案2】:

    如果您在构建时并不总是运行 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>
    

    【讨论】:

    • 是的,没错。如果 JaCoCo 被禁用,您需要特殊处理,但我的处理方式不同。我已经相应地更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2015-01-18
    • 2019-08-19
    • 2020-09-20
    • 2019-04-11
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多