Maven: извлечение ресурсов зависимостей перед тестированием

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

В jar зависимости ресурсы лежат в папке xml-resources.

Я нашел этот пример и попытался изменить его для моих нужд:

<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>

Это ничего не делает, когда я запускаю фазу process-test-resources. Я уверен, что там есть некоторые ошибки - я не вижу, где я могу указать зависимость, из которой должны быть взяты ресурсы, и <classifier>, похоже, на самом деле не указывает источник, из которого должны быть скопированы ресурсы.

Я потерялся здесь, может кто-нибудь сказать мне, как это сделать правильно?


person flyx    schedule 10.05.2012    source источник


Ответы (1)


Попробуйте что-нибудь вроде этого

<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 для подробного объяснения или дополнительной информации. Информация.

person FrVaBe    schedule 10.05.2012
comment
Папка outputDirectory в этом случае должна быть ../test-classes/.. вместо ../classes/.... - person khmarbaise; 10.05.2012
comment
@khmarbaise действительное возражение - может быть, даже лучше ${project.build.testOutputDirectory}/xml-resources (см. Super ПОМ) - person FrVaBe; 10.05.2012
comment
Спасибо за это, копирование работает теперь. Файлы лежат в target/test-classes/xml-resources. Однако я не могу загрузить их в свой тестовый код через getClass().getResourceAsStream("/xml-resources/file.xml"). Есть ли что-то еще, что мне нужно сделать? - person flyx; 10.05.2012
comment
Ах, забудьте об этом, это была ошибка моей IDE. - person flyx; 10.05.2012