web-dev-qa-db-ja.com

2回インデックスを作成することはできません-testSourceDirectoryとsourceDirectoryは同じです

メインモジュールの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のtestSourceDirectorysourceDirectoryは同じです。

[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 -> 

この問題を修正する方法は?

17
Amod Pandey

私も同じ問題に直面していました。最後に、以下のドキュメントの助けを借りてそれを解決しました:-

https://github.com/SonarOpenCommunity/sonar-cxx/wiki/FAQ

Q:エラー:原因:ファイル[...]に2回インデックスを作成できません。

A:以下のエラーの場合、除外/包含のプロパティを確認する必要があります。包含/除外パターンがソースファイルとテストファイルのばらばらのセットを生成することを確認してください

エラー:原因:ファイル[...]に2回インデックスを作成できません。包含/除外パターンがメインファイルとテストファイルのばらばらのセットを生成することを確認してください。例は次のようになります。

sonar.sources=.
sonar.tests=.
sonar.test.inclusions=**/*Test*/**
sonar.exclusions=**/*Test*/**
16
dira

これは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>
0
user07