Разъяснения по профилям и фазам Maven
В моем проекте Maven у меня есть несколько профилей Maven. В каждом профиле у меня есть docker-maven-plugin
а также maven-failsafe-plugin
, Вот как я связал цели и этапы.
докер-Maven-плагин
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
<goal>remove</goal>
</goals>
Maven-безотказный-плагин
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
</goals>
<phase>verify</phase>
<goals>
<goal>verify</goal>
</goals>
У меня есть профили для каждого типа базы данных (например, MySQL, Postgres и т. Д.). То, что я пытаюсь сделать, это запустить мои интеграционные тесты на докере с каждым типом базы данных.
Мой вопрос заключается в том, могу ли я запустить mvn с несколькими профилями (т.е. mvn clean install -P local-postgres,local-mysql
), чтобы каждый профиль выполнялся один за другим? Мое требование - не устанавливать 2 док-контейнера одновременно.
Я заметил, что pre-integration-test
фазы всех профилей запускаются первыми и завершаются с ошибкой The name "/apim-postgres" is already in use by container xxxxx
, Это то, как должны работать maven фазы, когда дается несколько профилей?
Есть ли способ, которым я могу выполнить мое требование?
1 ответ
Я не уверен, будет ли это работать, но если вы определяете каждый профиль независимо, он должен работать. Вы определяете каждый плагин дважды, по одному для каждого профиля. Порядок исполнения зависит от различных факторов. Я не знаю, где вы определили профили, но если они определены в том же поме, то порядок должен быть тот, который определен в этом поме. См. https://www.waltercedric.com/index.php?option=com_content&view=article&id=1795&catid=129&Itemid=332 для получения дополнительной помощи.