テスト範囲の Maven 依存関係を Eclipse に反映させるのに問題があります - ビルド パスに表示され、Eclipse のコンパイル / Javadoc の解決をいじっています。
Java EE ライブラリの例
ライブラリを使用してjavaee-api-6.0
、Java EE アプリケーションをコンパイルしています。
ただし、単体テストの目的で、API 以外にもアクセスしたかったので、実装が必要でした。だから私は次のようなテストスコープで埋め込まれたグラスフィッシュライブラリを含めました:
<repositories>
<repository>
<id>glassfish-extras-repository</id>
<url>http://download.java.net/maven/glassfish/org/glassfish/extras</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>compile</scope>
<type>jar</type>
</dependency>
</dependencies>
Maven で期待どおりに動作する
私の理解では、glassfish の依存関係のため、通常のフェーズ<scope>test</scope>
には含まれません。compile
両方の依存関係がtest-compile
フェーズに含まれるため、テスト クラスをコンパイルするときに、前者が後者よりも優先して使用されるように、javaee-api 依存関係の前に Glassfish 依存関係を必ず配置しました。そのため、Maven のみを使用してビルドする場合、この構成は問題になりません。
Eclipse 内で期待どおりに動作しない
ただし、m2e と Eclipse を使用すると、glassfish の依存関係がビルド パスにリストされます。
グラスフィッシュの依存関係は java-ee-api の依存関係の前にリストされているため、Eclipse が間違ったライブラリ (java-ee-api ではなくグラスフィッシュ) を使用して javadocs を検証/コンパイル/検索しているように見えます。(実際、コンパイルで間違ったライブラリが使用されているかどうかは 100% 確信が持てません。コードの検証時に使用されるコンパイルを内部で Eclipse が Maven を使用して実行しているかどうかによって異なりますが、そうであるかどうかはわかりませんが、 javadoc ルックアップは間違いなく間違ったライブラリを参照しています)
質問
単体テストを実行する場合を除いて、Eclipse が Glassfish lib を使用しないようにするにはどうすればよいですか? そのAPIの特定の実装ではなく、APIでコンパイル/ Javadocルックアップが発生していることを確認したい。