2009-08-24 6 views

ответ

30

Вы можете использовать build-helper-maven-plugin для указания дополнительных каталогов тестовых ресурсов следующим образом. Используя приведенную ниже конфигурацию, содержимое каталога тест-ресурсов будут скопированы в каталог целевой/тест-классов в течение порождающих испытаний источников фаза:

<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

Это не имеет значения функционально, но для упорядоченности фаза не должна генерировать-тест -ресурсы вместо генерации-тестовых источников? – 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

К сожалению, m2e не забирает конфигурацию Surefire при выполнении тестов из Eclipse. Слишком плохо, потому что это немного проще, чем цель add-test-resource build-helper-maven-plugin. – thSoft

7

Почему бы просто не использовать test/resources и разместить свои свойства в пути к классам от это пункт. Они будут только на тестовой стадии.

+1

У одной есть только одна такая папка, но часто более чем одна тестовая среда. – 30thh

+0

Проверьте профили maven, друг мой. –

4

Если у вас есть несколько ресурсов, вы можете использовать профиль maven и поместить различные ресурсы в соответствии с профилем, который вы тестируете.

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

Но если вы обычно работают на жидком нужно, что вы делаете тест интеграции, то вам не нужно наращивание хелперов-Maven-плагин.

1

maven-resources-plugin имеет цель copy-resources, которая позволит вам копировать ресурсы. Например:

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

Это будет копировать содержимое папки conf в базе Вашего проекта в папку target/test-classes (если не изменено project.build.testOutputDirectory), который будет добавлен к классам во время модульных тестов ,

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, например. в случае, если вы хотите указать разные ресурсы для разных сред (local/dev/test/prod). –

Смежные вопросы