我正在運行Jacoco的Maven插件。 prepare-agent
目標運行正常,但由於某些原因不生成jacoco.exec
文件。隨後report
目標投訴Skipping JaCoCo execution due to missing execution data file
。jacoco的準備代理不生成jacoco.exec文件
任何想法?
我正在運行Jacoco的Maven插件。 prepare-agent
目標運行正常,但由於某些原因不生成jacoco.exec
文件。隨後report
目標投訴Skipping JaCoCo execution due to missing execution data file
。jacoco的準備代理不生成jacoco.exec文件
任何想法?
讀了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
新值。
UPDATE:由於Fodder指出的那樣,如果你並不總是運行JaCoCo並沒有其他的插件設置${argLine}
然後Maven會抱怨${argLine}
是不確定的。爲了解決這個問題,簡單地定義${argLine}
應該是什麼時候JaCoCo被跳過,如:
<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>
是的,的確如此。如果JaCoCo被禁用,您需要特殊處理,但我以不同的方式處理。我相應地更新了我的答案。 – Gili
我想補充一點,只有當你改變了argLine配置的surefire插件才需要它。否則,默認配置是OK。 – shevchyk
如果您使用Tycho(用於Eclipse插件和應用程序),請使用$ {tycho.testArgLine}而不是$ {argLine}。 – n8n8baby
謝謝謝謝謝謝你! –