У меня есть несколько сложных тестов, которые используют автономные проекты Maven для проверки некоторого кода.Эти проекты Maven программно упаковываются тестами, а полученные файлы .jar
затем используются.В этих проектах используются артефакты из моего основного многомодульного проекта в текущей версии , в их pom.xml
.Другими словами, тестовые проекты Maven должны иметь возможность находить артефакты, предоставленные моим основным проектом.
В IDE все работает нормально, так как текущие артефакты из моего основного проекта разрешаются динамически (локальный репозиторий не требуется)) когда я запускаю тесты.Кроме того, я могу установить эти версии SNAPSHOT перед запуском тестов.Но когда я хочу выпустить новую версию своего проекта, мне нужно release:prepare
чтобы:
- обновить версии (удалить все «-SNAPSHOT»).
- Запускаетсявсе тесты, которые не заканчиваются на
*.PostInstallTest.java
. - Упакуйте артефакты и установите их локально.
- Затем запускаются тесты, заканчивающиеся на
*.PostInstallTest.java
, так какТесты требуют доступа к ранее установленным артефактам!Если тесты не пройдут, никакие коммиты не будут нажаты release:prepare
.
Я знаю, что это не идеально, поскольку «плохая» версия артефактов может быть установлена локально, когда тесты «PostInstallTest»потерпеть поражение.Но я бы предпочел, чтобы эти тесты вообще не запускались!
В настоящее время моя единственная рабочая идея - установить системное свойство при использовании профиля release
, а файлы *.PostInstallTest.java
сами отключить.если это свойство существует.Таким образом, эти тесты все равно будут работать при запуске внутри моей IDE (без профиля release
), но не будут выполняться вообще во время команды release:prepare
.Но, опять же, я хотел бы, чтобы они были выполнены.
Я посмотрел на prepareGoals конфигурацию подключаемого модуля Maven Release, но я не уверен, как он может мне помочь.Я также посмотрел на Maven Failsafe Plugin , но, похоже, он не поддерживает фазу "установки".
Итак, мой вопрос : есть ли способзапустить некоторые тесты после фазы "установки", когда используется release:prepare
(или на стадии "установки", но после плагина по умолчанию)?
ОБНОВЛЕНИЕ: Вот краткая схема, если она может помочь понять, что происходит:

ОБНОВЛЕНИЕ 2 : я не сделалВ конце концов, проверьте правильность Failsafe.Он работает на этапе «установки»!Посмотрите на ответ df778899.