メインモジュールのMavenサブモジュールとしてパフォーマンステストを作成しました。すべてのテストクラスはsrc/main/Javaで作成され、src/test/Javaではありません
プロジェクトをjarとしてパッケージ化して実行し、プロジェクトのパフォーマンステストを行うことができます。
実行したかったmvn test
。ために mvn test
仕事をするために<testSourceDirectory>
値セット。この場合のように、コードはsrc/main/Javaにあり、次のように設定します。
<testSourceDirectory>src/main/Java</testSourceDirectory>
今mvn test
機能します。
しかし、問題はソナービルドがエラーを報告して失敗することです:can't be indexed twice
。私のpomのtestSourceDirectory
とsourceDirectory
は同じです。
[ERROR] Failed to execute goal
org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli)
on project Blah: File [relative=XYZ.Java, abs=/Path/XYZ.Java] can't be indexed twice.
Please check that inclusion/exclusion patterns produce
disjoint sets for main and test files ->
この問題を修正する方法は?
私も同じ問題に直面していました。最後に、以下のドキュメントの助けを借りてそれを解決しました:-
https://github.com/SonarOpenCommunity/sonar-cxx/wiki/FAQ
Q:エラー:原因:ファイル[...]に2回インデックスを作成できません。
A:以下のエラーの場合、除外/包含のプロパティを確認する必要があります。包含/除外パターンがソースファイルとテストファイルのばらばらのセットを生成することを確認してください
エラー:原因:ファイル[...]に2回インデックスを作成できません。包含/除外パターンがメインファイルとテストファイルのばらばらのセットを生成することを確認してください。例は次のようになります。
sonar.sources=. sonar.tests=. sonar.test.inclusions=**/*Test*/** sonar.exclusions=**/*Test*/**
これはMavenの標準的な使用法ではありませんが、除外を使用してSonarQube分析を簡単に修正できます。 sonar.exclusions = src/main/Java/**またはsonar.test.exclusions = src/main/Java/**
ソースファイルをテストファイルと見なすか、メインファイルと見なすかによって異なります。
しかし、適切なMavenの方法は、テストをsrc/test/Javaに配置して、テストをアックすることです https://maven.Apache.org/guides/mini/guide-attached-tests.html
プロジェクトがデフォルトのMavenディレクトリ構造に従っていない場合、プロジェクトのpomで、ソースコードの一部とテストの一部の場所を明示的に指定できます。
<properties>
<sonar.sources>src/main/foo</sonar.sources>
<sonar.tests>src/test/bar</sonar.tests>
</properties>