2012-05-10 74 views
3

我有一个多模块Maven项目。一个子项目托管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文件夹应该是../test-classes/ ..而不是../ 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