回答:
分類子の代わりにタイプを使用することをお勧めします(参照:分類子)。それはあなたが何をしているかを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>
基本モジュールの提案をありがとう。ただし、この目的のためだけに新しいモジュールを作成したくありません。
Surefire Mavenのドキュメントとブログで許容できる回答が見つかりました。「テストクラスを含むjarを作成する方法」も参照してください。
これによりsrc/test/java
、jarプラグインを使用してコードの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>
そうです... Mainに依存関係としてBaseモジュールを含めるだけです。テストコードのみを継承する場合は、スコープタグを使用して、デプロイ時にMavenがアーティファクトにコードを含めないようにすることができます。このようなものがうまくいくはずです:
<dependency>
<groupId>BaseGroup</groupId>
<artifactId>Base</artifactId>
<version>0.1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>