MavenのSurefire(テスト)プラグイン_mvn test-compile
_は、_src/test/resources
_のファイルを_target/test-classes
_にコピーします。 _.Java
_を_src/test/Java
_にコンパイルし、コンパイルした_.class
_ファイルを_target/test-classes
_にコピーします。
ただし、_src/test/Java
_からリソースをコピーすることはありません。また、_.Java
_クラスと同じディレクトリにテストリソースを配置できる方が、_src/test/resources
_クラスのパラレル階層よりも便利です。 SOMECODE)__。
Mavenに_src/test/Java
_からリソースをコピーさせることは可能ですか?
リソースのコピーはすべてmaven-resource-pluginによって行われます。そのドキュメントを読むと、src/test/Javaからリソースのコピーを追加する方法がわかります。
デフォルトのライフサイクルに含まれるtest-resourcesゴールについては、 http://maven.Apache.org/plugins/maven-resources-plugin/testResources-mojo.html を参照してください。
そして http://maven.Apache.org/pom.html を見て、<testResources>
。
bmarguliesが答えを出しました ですが、詳細を記入してください。
<testresources>
は、次のように、プロジェクトのPOMの<build>
ノードに追加できます。
<testResources>
<testResource>
<directory>${project.basedir}/src/test/Java</directory>
</testResource>
</testResources>
src/test/Java
ソースコードを含む.Java
のすべてをコピーしますが、これは望ましくありません。
また、(bmarguliesで示唆されているように)他のすべてのPOMが継承する標準の親POMのデフォルトの<testResources>
設定をオーバーライドし、置き換えます(継承が変更されない限り)。標準の親はsrc/test/resources
をコピーするので、それをオーバーライドすることにより、通常どおりコピーされません。これは望ましくありません。 (特に、これを行う理由は、ユニティルを使用することです。ユニティルでは、unitils.properties
ファイルをコピーする必要があります。それは(とにかく)src/test/resources
にあります。
そこで、src/test/resources
を再追加します。
<testResources>
<testResource>
<directory>${project.basedir}/src/test/Java</directory>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
これはリストされた順序でコピーするため、/src/test/Java
(およびサブディレクトリ)と/src/test/resources
(およびサブディレクトリ)の両方に存在するファイルの場合、src/test/resources
バージョンは最終的にtest-classes
。
ここで必要なのは、not.Java
ファイルをコピーするだけです:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/Java</directory>
<excludes>
<exclude>**/*.Java</exclude>
</excludes>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
テスト構成をsrc/test/resources
フォルダー(ソースファイルの場合はsrc/test/Java
のアナログ)に置いたときの唯一の方法。このフォルダーのファイルは、テストの実行中にクラスパスにあるtarget/test-classes
フォルダーにコピーされます。理由はわかりませんが、次の設定はうまくいきませんでした。
<testResources>
<testResource>
<directory>${project.basedir}/src/test/Java</directory>
<excludes>
<exclude>**/*.Java</exclude>
</excludes>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
Mavenにsrc/test/javaからリソースをコピーさせることは可能ですか?
はい、これは antrunプラグイン で簡単に実現できます。