2012-05-10 8 views
3

私はマルチモジュールMavenプロジェクトを持っています。 1つのサブプロジェクトは、XSL/XMLリソースファイルをホストします。他のプロジェクトは、ユニットテストでこれらのファイルを使用する必要のあるJavaコードをホストします。Maven:テスト前に依存リソースを抽出します。

依存関係のjarでは、リソースはフォルダxml-resourcesにあります。

私はこのexampleを発見し、私のニーズのためにそれを変更しようとしました:私は、プロセス・テスト・リソース・フェーズを実行すると

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.4</version> 
    <executions> 
    <execution> 
     <id>resource-dependencies</id> 
     <phase>process-test-resources</phase> 
     <goals> 
     <goal>unpack-dependencies</goal> 
     </goals> 
     <configuration> 
     <classifier>xml-resources</classifier> 
     <outputDirectory>${project.build.directory}/classes/xml-resources</outputDirectory> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

は、これは何もしません。そこにいくつかのエラーがあることを確信しています - 私はどこからリソースを取得する必要がある依存関係を指定することができませんし、<classifier>は、リソースをコピーする場所を実際に指定していないようです。

私はここで失われています、誰かがこの権利を行う方法を教えてくれますか?

答えて

6

この

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.4</version> 
    <executions> 
    <execution> 
     <id>resource-dependencies</id> 
     <phase>process-test-resources</phase> 
     <goals> 
     <goal>unpack-dependencies</goal> 
     </goals> 
     <configuration> 
     <includeArtifactIds>my-artifact-id</includeArtifactIds> 
     <includes>foobar.txt, loremipsum.xml</includes> 
     <outputDirectory>${project.build.directory}/classes/xml-resources</outputDirectory> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

のようなものを試してみては詳細な説明や詳細についてunpack-dependencies parametersを見てください。

+2

この場合、outputDirectoryフォルダは../ classes/....の代わりに../test-classes/ ..でなければなりません。 – khmarbaise

+1

@khmarbaiseの有効な異論 - 多分もっと良い '$ {project.build.testOutputDirectory}/xml-resources'([Super POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Super_POM)を参照してください) – FrVaBe

+0

これはありがとうございます。ファイルは 'target/test-classes/xml-resources'にあります。しかし、私は 'getClass()。getResourceAsStream("/xml-resources/file.xml ")'を使ってテストコードにロードできません。私は何か他に何かする必要がありますか? – flyx

関連する問題