Maven (Surefire): копировать тестовые ресурсы из SRC / Test / Java

StackOverflow https://stackoverflow.com/questions/4221285

Вопрос

Maven's Surefire (тестирование) плагинmvn test-compile Копирует файлы в src/test/resources к target/test-classes. Отказ Это компилируется .java в src/test/java, и копирует собранный .class Файлы к target/test-classes.

Но это не копирует ресурсы из src/test/java, и удобнее быть в состоянии поставить тестовые ресурсы в том же каталоге, что и .java классы они являются ресурсами, чем в параллельной иерархии в src/test/resources.

Можно ли получить Maven для копирования ресурсов из src/test/java?

Это было полезно?

Решение

Копирование ресурсов все выполнено плагином Maven-Resource-Resource, и если вы прочитаете его документы, вы увидите, как добавить копирование ресурсов из SRC / Test / Java.

Видеть http://maven.apache.org/plugins/maven-resources-plugin/tetestresources-mojo.html. Для цели тестовых ресурсов, которая включена в жизненный цикл по умолчанию.

А потом посмотрите http://maven.apache.org/pom.html., и искать <testResources>.

Другие советы

Bmargulies дал ответ, но позвольте мне заполнить некоторые детали.

<testresources> может быть добавлен к <build> Узел POM проекта, как это:

 <testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
  </testResource>
 </testResources>

Что копирует все в src/test/java -- в том числе .java Исходный код, который мы не хотим.

Это также (как Bmargulies только намекало на) переопределяют и заменяет по умолчанию <testResources> Установка в стандартном родительском POM, что все остальные пома наследуют от (если только это наследование не изменено). Стандартные родительские копии src/test/resources, Поэтому, переопределяя это, мы не получаем это скопированные как обычно, которые мы не хотим. (В частности, вся вся вся причина для этого является использование мониторов, которые хотят unitils.properties файл скопирован - и это (для меня, в любом случае) в src/test/resources.

Итак, мы снова добавляем src/test/resources:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>

Что копии в указанном порядке, так что для файлов, которые существуют в обоих /src/test/java (и подкаталоги) и в /src/test/resources (и подкаталоги), src/test/resources Версия - это тот, который заканчивается в test-classes.

Теперь нам просто нужно нет скопировать .java Файлы:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
    <excludes>
        <exclude>**/*.java</exclude>
    </excludes>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>

Единственный способ, которым он работал для меня, когда я положил свою конфигурацию теста в src/test/resources папка (аналог src/test/java Для исходных файлов). Файлы из этой папки копируются на target/test-classes Папка, которая находится на классе во время выполнения тестов. Я не знаю почему, но следующий конфиг не работал для меня:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
    <excludes>
        <exclude>**/*.java</exclude>
    </excludes>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>

Можно ли получить Maven для копирования ресурсов из SRC / Test / Java?

Да, это легко достигается с Antrun Plugin.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top