Запуск цели плагина перед значением по умолчанию

TL; DR: Используя maven, я хочу запустить цель плагина в начале этапа test, прежде чем тесты будут выполняться. Какой был бы чистый способ сделать это?

Я хочу напечатать сообщение непосредственно перед началом тестов. Поэтому я хочу использовать echo цель плагина echo в начале тестовой фазы (чтобы сообщить пользователю, что если каждый тест терпит неудачу, ему лучше посмотреть README так как там есть тестовая среда, которую он должен настроить первым )

Попытка № 1

Простым подходом может быть запуск этого плагина на предыдущем этапе, process-test-classes.

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

Попытка № 2

Согласно документации Maven, When multiple executions are given that match a particular phase, they are executed in the order specified in the POM, with inherited executions running first. , поэтому я попытался установить явно плагин surefire:

... <plugin> <groupid>com.******.maven.plugins</groupid> <artifactid>maven-echo-plugin</artifactid> <version>0.1</version> <executions> <execution> <phase>test</phase> <goals> <goal>echo</goal> </goals> </execution> </executions> <configuration> <echos> <echo>*** If most tests fail, make sure you've installed the fake wiki. See README for more info ***</echo> </echos> </configuration> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-surefire-plugin</artifactid> <version>2.16</version> <executions> <execution> <phase>test</phase> <goals> <goal>test</goal> </goals> </execution> </executions> </plugin> ...

Но тесты запускаются до того, как мое сообщение будет напечатано.

Итак, чтобы сказать это: есть ли способ достичь моей цели, или я должен придерживаться "решения process-test-classes ", хотя это кажется немного "взломанным"?

Благодарю!

1 ответ

Как сказал @khmarbaise, ваше решение по-прежнему взломано, потому что весь тест выглядит как Integration Test и должен обрабатываться Failsafe Plugin. Failsafe имеет приятную фазу pre-integration-test для тестирования поддельной вики и т.д. :)

Основываясь на руководстве по настройке исполнения Mojo Exeo, это работает для меня:

<plugin> <groupid>com.******.maven.plugins</groupid> <artifactid>maven-echo-plugin</artifactid> <version>0.1</version> <executions> <execution> <id>1-test</id> <phase>test</phase> <goals> <goal>echo</goal> </goals> </execution> </executions> <configuration> <echos> <echo>*** If most tests fail, make sure you've installed the fake wiki. See README for more info ***</echo> </echos> </configuration>
</plugin>
<plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-surefire-plugin</artifactid> <version>2.16</version> <executions> <execution> <id>default-test</id> <configuration> <skip>true</skip> </configuration> </execution> <execution> <id>2-test</id> <phase>test</phase> <goals> <goal>test</goal> </goals> </execution> </executions>
</plugin>

Это очень странно для меня;)

У меня есть два плагина с исполнениями, связанными с источниками-источниками, один из которых указан в списке примерно из 6 плагинов, а другой - последним. Тем не менее, тот, который указан последним (который зависит от того, который указан первым), всегда выполняется первым.

Как я могу выполнить несколько плагинов maven в течение одной фазы и установить их соответствующий порядок выполнения?

licensed under cc by-sa 3.0 with attribution.