src/main/javaとsrc/test/java構造のプロジェクトがあり、maven-jar-pluginを使ってテストブランチのjarファイルを構築しました。しかし、すべての依存関係が解決されるようにテストjarをパッケージ化したい。依存関係を含むようにmaven-jar-pluginに伝える方法はありますか?テストJARにMavenの依存関係を含めるにはどうしたらいいですか?
ありがとうございます!
フランクは
src/main/javaとsrc/test/java構造のプロジェクトがあり、maven-jar-pluginを使ってテストブランチのjarファイルを構築しました。しかし、すべての依存関係が解決されるようにテストjarをパッケージ化したい。依存関係を含むようにmaven-jar-pluginに伝える方法はありますか?テストJARにMavenの依存関係を含めるにはどうしたらいいですか?
ありがとうございます!
フランクは
同様の状況で、テストコードを別のjarに移動して元のものに依存させました。アグリゲータープロジェクトを使用して、メインjarをビルドするときにテストが実行されるようにすることができます。
実際には、Hadoopで実行できる単体テストがhadoop jar
あなたはこれを行うことができます:assembly pluginとジャーアセンブリを作成し、展開の依存関係を持って、新しいテストジャーをパックし、原子炉に取り付けます。あなたは終わった。
パッケージの記述子はthisのようになります。
Hadoopで実行する必要のある統合テストで同様の問題が発生しました。私たちの統合テストは別の統合テストモジュールのtest
フォルダにありますので、必要なのはtest-jar-with-dependencies
で、私たちの生活を楽にします。
私はassembly pluginをMichael-Oの言葉通り使用しています。私のアセンブリ・ディスクリプタはsrc/main/assembly/test-jar-with-dependencies.xml
に位置し、プラグインの一部の標準jar-with-dependencies
記述の修正です:このアセンブリはtest-jar
に依存している
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>test-jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<!-- we're creating the test-jar as an attachement -->
<useProjectAttachments>true</useProjectAttachments>
<unpack>true</unpack>
<scope>test</scope>
</dependencySet>
</dependencySets>
</assembly>
は、モジュールのビルドの一部として作成されています。だから私は、モジュールのpom.xml
に次を追加しました:
<!-- create a complete jar for testing in other environments -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/test-jar-with-dependencies.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
これは受け入れられた解決策でなければなりません! – Ichthyo
<dependency>
<groupId>me.wener.xxx</groupId>
<artifactId>xxx-core</artifactId>
<version>${xxx.version}</version>
<type>test-jar</type>
<!-- <scope>test</scope> -->
</dependency>
私はテストjar.the重要な行を含めるためにこれを使用する.Iが、これは何が必要であることを確認していない<type>test-jar</type>
です。
3年前ですが、他人を助けるかもしれません。少なくとも、それは私を助けました。 :-)
質問は、テストジャーを使用する方法についてではなく、それは1つを作成する方法についてです –
怒鳴るようアセンブリdebendencySetのフィルタを含む指定し、あなたのアセンブリ内のテスト-jarファイルの依存関係を含める:
...
<dependencySet>
<outputDirectory>/</outputDirectory>
<includes>
<include>*:jar:*</include>
<include>*:test-jar:*</include>
</includes>
</dependencySet>
...
のMaven 3
のpom.xml
のために働い以下<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
<phase>test-compile</phase>
</execution>
</executions>
</plugin>
<plugin>
アセンブリファイル
<dependencySet>
<outputDirectory>demo/test-lib</outputDirectory>
<includes>
<!--test only dependencies (like netty)-->
<include>io.netty:netty-all</include>
<!-- the actual test jar-->
<include>${project.groupId}:${project.artifactId}:test-jar</include>
</includes>
<useProjectAttachments>true</useProjectAttachments>
<scope>test</scope>
</dependencySet>
メモに余分な
あなたの質問は不明です。すべてのテスト依存関係をテストjarに含めるか、テストデプスとして正しく解決しますか? –
私はテストjarに依存関係を追加したいので、テストjarでクラスを呼び出すことができ、クラスパスには他のjarは必要ありません。 – Frank
[maven-assembly-plugin](http://maven.apache.org/plugins/maven-assembly-plugin/)は、あなたが望むものを実現する方法を提供します。 –