web-dev-qa-db-ja.com

jacocoのprepare-agentがjacoco.execファイルを生成しない

JacocoのMavenプラグインを実行しています。 prepare-agentゴールは正常に実行されますが、何らかの理由でjacoco.execファイルを生成しません。その後、reportゴールはSkipping JaCoCo execution due to missing execution data fileに文句を言います。

何か案は?

17
Gili

https://groups.google.com/forum/#!topic/jacoco/LzmCezW8VKA を読んだところ、prepare-agentargLineと呼ばれる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を新しい値に追加します。

[〜#〜] update [〜#〜]Fodder で指摘されているように、常に実行しているとは限りませんJaCoCoと他のプラグインセットはありません${argLine}その後、Mavenは${argLine}は未定義です。これを解決するには、何を${argLine} JaCoCoがスキップされたときのようになります:

<properties>
    <argLine/>
</properties>

この場合、説明されているように、$ {argLine}の代わりに@ {argLine}を使用します ここ

33
Gili

ビルド時に常に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>
2
Fodder