2012-05-10 1 views
3

У меня есть многомодульный проект Maven. В одном подпроекте хранятся файлы ресурсов XSL/XML. В другом проекте размещается код Java, который должен использовать эти файлы в своих модульных тестах.Maven: Извлеките ресурсы зависимостей перед тестированием

В банке зависимости ресурсы лежат в папке 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

Try что-то вроде этого

<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

@hmarbaise действительное возражение - возможно, даже лучше '$ {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