В вашем pom.xml
вы определяете два типа казней:
- Один связан с
clean
фазой
- Один связан с фазой
deploy
. Кстати, обратите внимание, что для Maven deploy
означает не означает развертывание моего (веб-) приложения на сервере , но развертывание артефакта в удаленном хранилище . Пожалуйста, прочитайте deploy
информацию о плагине для более подробной информации.
Поэтому, если вы запустите команду mvn deploy , когда жизненный цикл Maven достигнет фазы deploy
, он запустит выполнение плагина (второй в вашем pom.xml
).
Однако, в вашем случае вы не выполняете жизненный цикл Maven по умолчанию, так как ваша команда mvn antrun: run (я не рассматриваю цель clean
здесь как это не имеет значения для проблемы). В Maven это можно перевести как запустить плагин antrun с целью запустить . Проблема в том, что вы не определяете конфигурацию (которая содержит задачи Ant) для прямого вызова вашего подключаемого модуля Ant.
Итак, два решения:
- Свяжите второе выполнение с фазой
install
, а затем запустите mvn clean install
вместо mvn antrun:run
. Обратите внимание, что в этом случае вы будете запускать весь жизненный цикл Maven (то есть компиляцию, тесты, упаковку).
- Создайте конфигурацию этого плагина, которая не связана с любым выполнением. С точки зрения XML, просто добавьте (или переместите) второй блок
<configuration>
, чтобы он стал дочерним для определения <plugin>
.
Если вы выберете второе решение, у вас будет pom.xml
как это:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<!-- For cleaning -->
<executions>
<execution>
<id>clean</id>
<configuration>
<task>
<echo>Cleaning deployed website</echo>
</task>
<tasks>
<delete dir="${deployRoot}/mydir/${env}"/>
</tasks>
</configuration>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<configuration>
<tasks>
<echo>Copying website artifact to deployment </echo>
...
</tasks>
</configuration>
</plugin>