Как вызвать одну и ту же сборку maven за один вызов
Можно ли несколько раз вызывать одну и ту же структуру maven с разными параметрами конфигурации?
У меня есть сборка maven, которая создает число RPM с rpm-maven-plugin. Я передаю ему переменную (environment
), которая определяет среду, для которой RPM предназначен для: разработки, постановки или производства.
Чтобы создать все RPM для всех сред, я вызываю mvn package -Denvironment=...
3 раза; и я хотел бы упростить это. Было бы здорово, если бы я смог вызвать mvn package
один раз, и он, в свою очередь, построил бы три RPM для всех сред.
Вы видите какой-либо способ сделать это?
Изменить 1
Пока (на основе dm3 отличный ответ), я могу создать три независимых RPM в одной сборке с теми же свойствами. Теперь проблема состоит в том, чтобы изменить свойство environment
для каждого выполнения. Любые предложения?
<project>
<properties>
<!-- Default Environment -->
<environment>development</environment>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1-alpha-1</version>
<executions>
<execution>
<phase>package</phase>
<id>package-development</id>
<goals><goal>rpm</goal></goals>
</execution>
<execution>
<phase>package</phase>
<id>package-staging</id>
<goals><goal>rpm</goal></goals>
</execution>
<execution>
<phase>package</phase>
<id>package-production</id>
<goals><goal>rpm</goal></goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1-alpha-1</version>
<extensions>true</extensions>
<configuration>
... VERY LONG CONFIG ...
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Ответы
Ответ 1
Я считаю, что единственный способ достичь этого во время одного запуска maven - связать несколько исполнений плагина (с различными конфигурациями) с фазой жизненного цикла, например:
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<phase>test</phase>
<id>test-1</id>
<configuration>
...
</configuration>
<goals><goal>test</goal></goals>
</execution>
<execution>
<phase>test</phase>
<id>test-2</id>
<configuration>
...
</configuration>
<goals><goal>test</goal></goals>
</execution>
</executions>
</plugin>
</plugins>
...
</build>
Вы можете прикрепить эту конфигурацию к некоторому профилю, вызванному одним свойством (например, mvn package -Denvironment=all
).