Должен ли maven-failsafe-plugin выполняться в потомках POM, где он указан?

Я указал использование Failsafe в родительском POM. Когда я бегу mvn verify в моей многокомпонентной сборке нет никаких намеков на запуск Failsafe - он нигде не отображается в выводе консоли.

Если я добавлю то же самое <plugin> определение в дочерний POM, он запускается (хотя он жалуется на невозможность найти \failsafe-reports\failsafe-summary.xml).

Конечно, это должно быть наследование, какие плагины должны быть запущены?

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.15</version>
    <executions>
        <execution>
            <goals>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2 ответа

Решение

Сначала вы должны определить его в pluginManagement следующим образом:

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>2.15</version>
          <executions>
            <execution>
              <id>integration-test</id>
              <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

Важной частью является использование целей integration-test а также verify и не только verify, Исходя из вышесказанного, вам необходимо определить реальное использование следующим образом:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

Вы можете активировать использование отдельно в каждом подмодуле, в котором вы хотите использовать интеграционные тесты, добавив приведенный выше фрагмент кода. Обычно это только в нескольких модулях.

Вы должны добавить цель integration-test

              <goals>
                 <goal>integration-test</goal>
                 <goal>verify</goal>
              </goals>

Цель проверки - просто проверяет сгенерированный отчет (failsafe-summary.xml), чтобы увидеть, была ли ошибка теста, и не дает ли выполнить сборку.

Целевой интеграционный тест фактически запускает тесты, по крайней мере, для классов, которые соответствуют IT*.java, IT.java а также ITCase.java по умолчанию.

Другие вопросы по тегам