Другие близки ... но не сигару.
Когда Maven запускает выпуск, для процесса выпуска нет специальных фаз. То, что вы хотите сделать, это добавить профиль, который настроен для включения требуемого теста, например.
<profiles>
<profile>
<id>release-preflight-checks</id>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>release-preflight-checks</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
.. include your test here
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Затем вам нужно настроить безошибочным по умолчанию не выполнить свой предполетный досмотр
<build>
<plugins>
...
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
.. exclude your test here
</configuration>
</plugin>
...
</plugins>
</build>
И, наконец, вы должны сказать Maven, что этот профиль должен быть активным только во время release:prepare
«с раздвоенным исполнением
<build>
<plugins>
...
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
...
<preparationGoals>clean verify -P+release-preflight-checks</preparationGoals>
...
</configuration>
</plugin>
...
</plugins>
</build>
Примечание: это жизненно важно иметь +
перед именем профиля, так что вы добавляете профиль в список активных профилей, иначе ваш шаг release:prepare
не будет проверять, что сборка работает с активным профилем выпуска, и вы можете получить последующий release:perform
сбой.
Примечание. Менее сложным путем было бы просто включить конфигурацию surefire в профиль выпуска, который вы используете (по умолчанию имеет идентификатор release
, но это более подвержено ошибкам, так как вы можете изменить это через родительский pom - например, если вы решите направить свой проект на центральный, sonatype-oss-parent изменит профиль выпуска на sonatype-release
- и тогда вы не увидите, что сборка завершилась неудачей, поскольку тест не будет выполнен до тех пор, пока вы не измените свой pom для соответствия новый идентификатор профиля выпуска ... с использованием -P+release-preflight-checks
гарантирует, что профиль всегда активен для release:prepare
и дополнительно имеет право полностью удовлетворить требования оригинального пользователя, т.е. работает только для release:prepare
и не работает для release:perform
, который будет иметь место, если исполнение было добавлено в профиль выпуска)
Я думаю, я был на правильном пути! :) Я начал строить это, но не знал, как его завершить, или если он будет работать. Большое спасибо за это!!! – Steve
Этот ответ, как написано, не будет работать.См. Мой ответ для более подробного объяснения, но TL; DR нет фазы 'release-подготовки' –
@StephenConnolly Hmmmm. Никаких фаз в выпуске-подготовке. Я полагал, что «релиз-подготовка» был неправильным (обратите внимание на отказ от ответственности), но что существует какая-то фаза, уникальная для выпуска: подготовить ее, чтобы она зависала. Наверное, нет. –