4

すべてのモジュールがグローバル統合テストに参加できる、いくつかのレベルのネストされた Maven プロジェクトがあります。グローバルなマルチ モジュール カバレッジを実現するために、Maven 変数を使用して、複数のモジュールで同じファイルを使用および共有するように jacoco を構成しました${session.executionRootDirectory}

<execution>
    <id>pre-integration-test</id>
    <phase>pre-integration-test</phase>
    <goals>
        <goal>prepare-agent-integration</goal>
    </goals>
    <configuration>
        <propertyName>jacoco.failsafeArgLine</propertyName>
        <destFile>${session.executionRootDirectory}/target/jacoco-it.exec</destFile>
    </configuration>
</execution>

このように、サブモジュール内でのネストの深さに関係なく、同じデータ ファイルが各モジュールで使用されます。「mvn clean install」を起動すると、jacocoによって正しいデータファイルが生成されることを確認しました。

起動時に問題が発生するようになりましたmvn sonar:sonar。プラグインはその変数を実際のパスに置き換えることができないようです。ログに次のように表示されます

[INFO] JaCoCoItSensor: JaCoCo IT report not found: /home/tomcat/.jenkins/jobs/MYJOB/workspace/${session.executionRootDirectory}/target/jacoco-it.exec

を使用するとうまくいきません@{session.executionRootDirectory}

回避策はありますか?

4

1 に答える 1

1

SonarSource のこのバグ レポートのコメントに従って、次の構成を使用することをお勧めします。

<plugin>
    <groupId>com.github.goldin</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>0.2.5</version>
    <executions>
        <execution>
            <id>set-sonar.jacoco.reportPath</id>
            <goals>
                <goal>set-properties</goal>
            </goals>
            <phase>initialize</phase>
            <configuration>
                <rawProperties>
                    sonar.jacoco.itReportPath = ${session.executionRootDirectory}/target/jacoco-it.exec
                </rawProperties>
                <addDollar>true</addDollar>
            </configuration>
        </execution>
    </executions>
</plugin>

... 残念ながら Maven 3.1+ と互換性がありませんでした。私はfork というソースを使用してビルドし、Maven 3.2.3 ですべてを正しく動作させることができました。

于 2016-04-13T13:24:34.380 に答える