Когда я бег mvn deploy
в моем проекте, который имеет <packaging>war</packaging>
я получаю ошибку:заменить стандартный Maven цели жизненного цикла
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy (default-deploy) on project store-service-impl: Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter
Вероятно, что по умолчанию deploy:deploy
цели связана с фазой deploy
жизненного цикла. Другими словами, Maven попытается запустить сгенерированный артефакт (файл .war в этом случае) в удаленный репозиторий, когда будет выполняться фаза жизненного цикла deploy
.
В моем случае я хочу развернуть войну на удаленный экземпляр Tomcat, а не на удаленный репозиторий Maven. Я добавил следующее в pom.xml
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<container>
<containerId>tomcat6x</containerId>
<type>remote</type>
</container>
<!--
<executions>
<execution>
<id>deploy-tomcat</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
-->
<configuration>
<type>runtime</type>
<properties>
<cargo.remote.uri>http://10.60.60.60:8080/manager</cargo.remote.uri>
<cargo.remote.username>jack</cargo.remote.username>
<cargo.remote.password>secret</cargo.remote.password>
</properties>
</configuration>
<deployer>
<type>remote</type>
</deployer>
</configuration>
</plugin>
Это успешно разворачивает .war, когда я бегу mvn cargo:deploy
. Однако, если я свяжу эту цель с фазой deploy
жизненного цикла Maven, раскомментируя элемент <executions>
, я получаю вышеупомянутую ошибку.
Похоже, что cargo:deploy
цели была добавлена к целям, связанным с deploy
фазы, но я хочу заменить на deploy:deploy
целях, привязанные к фазе deploy
жизненного цикла (по умолчанию) с cargo:deploy
целью, является это возможно?
У меня нет интеграционных тестов, поэтому это не относится ко мне. Если я привяжу груз к фазе «pre-integration-test», тогда .war будет развернут, когда кто-то запускает 'mvn install'. Я только хочу, чтобы он был развернут, когда кто-то запускает «mvn deploy». –
Не обижайтесь, но IMHO вы неправильно используете фазу «развернуть». Он имеет то же имя, что и вы, но это не то, что вы хотите. Он предназначен для развертывания в репозитории maven. 'mvn install' устанавливает файл войны в репозиторий maven локального компьютера, как я уверен, вы знаете. Я бы расследовал использование чего-то типа Jenkins для развертывания на удаленном сервере при успешной сборке. О, и получить некоторые интеграционные тесты ;-) – artbristol
точка, занятая фазой 'deploy' - спасибо! –