2009-08-24 13 views

答えて

30

build-helper-maven-pluginを使用して、追加のテストリソースディレクトリを次のように指定できます。次の設定を使用して、テスト・リソース・ディレクトリの内容は生成するテスト・ソース間、ターゲット/テスト-classesディレクトリにコピーされます相:あなたは自分の財産を入れたい場合は

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.12</version> 
    <executions> 
    <execution> 
     <id>add-test-resource</id> 
     <phase>generate-test-sources</phase> 
     <goals> 
     <goal>add-test-resource</goal> 
     </goals> 
     <configuration> 
     <resources> 
      <resource> 
      <directory>path/to/additional/test/resources</directory> 
      <excludes> 
       <exclude>**/folder-to-exclude/**</exclude> 
      </excludes> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+4

機能的には問題ありませんが、秩序性に関してはフェーズはgenerate-test generate-test-sourcesではなく-resources? – thSoft

23

ディスク上のファイルどこかを、ビルド時に/テスト・クラスをターゲットに、これらのプロパティファイルをコピーしたくない、あなたはこのよう

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <additionalClasspathElements> 
     <additionalClasspathElement>/add/this/to/path</additionalClasspathElement> 
    </additionalClasspathElements> 
    </configuration> 
</plugin> 
+1

残念ながら、Eclipseからテストを実行すると、m2eはSurefireの設定を取得しません。これはbuild-helper-maven-pluginのadd-test-resourceゴールよりも少し単純なのであまりにも悪いです。 – thSoft

7

理由だけではなく、test/resourcesを使用してから、クラスパスにあなたの特性を置かないでそれを行うことができますその点。彼らはテスト段階のためだけにそこにいるでしょう。

+1

このようなフォルダは1つしかありませんが、多くの場合、複数のテスト環境があります。 – 30thh

+0

Mavenプロフィールをチェックしてください。 –

4

複数のリソース環境がある場合は、mavenプロファイルを使用して、テストしているプロファイルに従ってさまざまなリソースを配置できます。

test/resources/uat 
test/resources/prod 
test/resources/dev 

しかし、通常、統合テストを行う必要がある場合は、build-helper-maven-pluginは必要ありません。

1

maven-resources-pluginには、リソースをコピーできるようになるcopy-resourcesという目標があります。 (あなたがproject.build.testOutputDirectoryを変更しない限り)

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
     <id>additional-resources</id> 
     <phase>process-test-resources</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${project.build.testOutputDirectory}</outputDirectory> 
      <resources> 
      <resource> 
       <directory>${project.basedir}/conf</directory> 
      </resource> 
      </resources> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

これはtarget/test-classesフォルダへのプロジェクトのベースにconfフォルダの内容をコピーします、あなたのユニットテストの際にクラスパスに追加されます。たとえば、 。

23

新しいテストリソースフォルダを追加することもできます。

<build> 
    <testResources> 
     <testResource> 
      <directory>${project.basedir}/src/test/resources</directory> 
     </testResource> 
     <testResource> 
      <directory>${project.basedir}/src/test/something_else</directory> 
     </testResource> 
    </testResources> 
</build> 

最初のパスはsrc/test/resourcesです。デフォルトのパスを使用する場合は、そのパスが含まれていることを確認してください。 (testResourcesタグはデフォルトを上書きしますので、デフォルトのパスを明示的に指定しないと使用されなくなります)

+0

これは私のために働いた。デフォルトの必要性を指摘するための+1。 –

+2

これはまさに私が探していたものです、ありがとう!受け入れられる 'build-helper-maven-plugin'ソリューションよりもずっと簡単です。これを行う良い方法を探している他の人には、 ' ...'構造をあなたのMavenプロファイルに追加することもできます。異なる環境(ローカル/ dev/test/prod)に異なるリソースを指定したい場合に使用します。 –

関連する問題