Два профиля сборки активны, но Maven выполняет задачи плагина antrun только в одном профиле
Наше приложение может быть построено для нескольких серверов приложений и использоваться в нескольких средах.
Тип сервера приложений и целевую среду следует указывать с помощью профилей Maven. Один и только один из каждого типа профиля должен присутствовать при компиляции кода. Все профили вызывают выполнение одной или нескольких задач копирования mavent-antrun-plugin для включения правильных файлов настроек в сгенерированный JAR.
Ниже приведена часть файла pom.xml. Включена часть профиля AS "oracle", а также часть профиля среды "development". Цель состоит в том, чтобы для создания JAR, который можно развернуть в Oracle AS в среде разработки, код компилируется с использованием двух переключателей профиля. mvn -P oracle,development
Профили AS имеют также другие задачи (не показаны ниже), которые должны быть выполнены до выполнения задач профиля среды (именно поэтому профили имеют разные фазы).
Моя проблема в том, что Maven отказывается выполнять задачи в обоих выбранных профилях.
mvn -Poracle
работает так, как и положено. Так же mvn -Pdevelopment
, Тем не мение, mvn -Poracle,development
приводит к выполнению только задач в профиле оракула. Если все задачи в плагине antrun профиля oracle закомментированы, то задачи в профиле разработки выполняются.
Мои вопросы: * Почему Maven отказывается выполнять задачи муравья в обоих этих профилях? * Есть ли способ это исправить?
Объединение профилей (oracle-development, jboss-development и т. Д.) Для нас не вариант, поскольку этот модуль является частью более крупного проекта и потребует внесения изменений в несколько других проектов.
Мы используем в настоящее время Maven 2.2.0.
<profile>
<id>oracle</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<copy .../>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
...jboss, glassfish profiles...
<profile>
<id>development</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<copy .../>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
...production, test profiles...
1 ответ
Добавить уникальный идентификатор выполнения для каждого <execution>
:
<profile>
<id>oracle</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>execution1</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>ORACLE</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>development</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>execution2</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>DEV</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
Проверенное рабочее решение:) Без <id>
элемент, я думаю, что один <execution>
переопределяет другой.