2014-02-07 68 views
15

我正在運行Jacoco的Maven插件。 prepare-agent目標運行正常,但由於某些原因不生成jacoco.exec文件。隨後report目標投訴Skipping JaCoCo execution due to missing execution data filejacoco的準備代理不生成jacoco.exec文件

任何想法?

回答

30

讀了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

+0

我想補充一點,只有當你改變了argLine配置的surefire插件才需要它。否則,默認配置是OK。 – shevchyk

+2

如果您使用Tycho(用於Eclipse插件和應用程序),請使用$ {tycho.testArgLine}而不是$ {argLine}。 – n8n8baby

+1

謝謝謝謝謝謝你! –

0

如果您在建築時並不總是運行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> 
+0

是的,的確如此。如果JaCoCo被禁用,您需要特殊處理,但我以不同的方式處理。我相應地更新了我的答案。 – Gili

相關問題