Maven の別のモジュールのテスト コードにどのように依存できますか?
例、2 つのモジュールがあります。
- ベース
- 主要
Base のベース テスト クラスを拡張する Main のテスト ケースが必要です。これは可能ですか?
更新:テスト jar の作成を含む、受け入れ可能な回答が見つかりました。
Maven の別のモジュールのテスト コードにどのように依存できますか?
例、2 つのモジュールがあります。
Base のベース テスト クラスを拡張する Main のテスト ケースが必要です。これは可能ですか?
更新:テスト jar の作成を含む、受け入れ可能な回答が見つかりました。
classifier の代わりに typeを使用することをお勧めします ( classifierも参照)。これは、Maven に何をしているのかをもう少し明確に伝えます (そして、m2eclipse と q4e の両方がそれを好むことがわかりました)。
<dependency>
<groupId>com.myco.app</groupId>
<artifactId>foo</artifactId>
<version>1.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
基本モジュールの提案をありがとう。ただし、この目的のためだけに新しいモジュールを作成したくはありません。
SurefireMavenのドキュメントとブログで許容できる答えが見つかりました。「テストクラスを含むjarを作成する方法」も参照してください。
これにより、 jarプラグインsrc/test/java
を使用してコードのjarファイルが作成され、テストを含むモジュールがコードを共有できるようになります。
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
上で作成された添付のテストJARを使用するには、テストの指定された分類子を使用してメインアーティファクトへの依存関係を指定するだけです。
<project>
...
<dependencies>
<dependency>
<groupId>com.myco.app</groupId>
<artifactId>foo</artifactId>
<version>1.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>
テストコードを src/main/java として Maven プロジェクトを作成し、次の依存関係をプロジェクトに追加することで、これを解決しました。
<dependency>
<groupId>foo</groupId>
<artifactId>test-base</artifactId>
<version>1</version>
<scope>test</scope>
</dependency>
はい... Base モジュールを依存関係として Main に含めるだけです。テスト コードのみを継承する場合は、スコープ タグを使用して、デプロイ時に Maven がアーティファクトにコードを含めないようにすることができます。このようなものが動作するはずです:
<dependency>
<groupId>BaseGroup</groupId>
<artifactId>Base</artifactId>
<version>0.1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>