我正在尝试在“始终处于活动状态”的maven配置文件中运行一次插件,并再次在有条件执行的配置文件中运行。运行条件配置文件时,“始终打开”配置文件中的插件不会执行。但是,当只使用“始终处于活动状态”的配置文件执行maven时,插件运行正常。
以下是我的pom.xml
的示例<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
<property>
<name>!doNoEverSetThisPropertyThisProfileShouldAlwaysBeActive</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>antCopyResources</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
...
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>prod</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>prodTokenReplace</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
...
</plugin>
</plugins>
</build>
</profile>
例如,如果我调用maven,如:
mvn clean compile
默认配置文件中的antrun插件运行正常。
但是,如果我调用maven,如:
mvn -P prod clean compile
只有prod中的antrun插件运行。
mvn -P prod help:active-profiles
Active Profiles for Project 'projectname':
The following profiles are active:
- default (source: pom)
- prod (source: pom)
答案 0 :(得分:1)
我知道这是一个迟到的答案,但它可能对其他人有帮助。
我有一个类似的案例,我通过将执行的common(activeByDefault)部分放在配置文件部分以及主构建部分中来解决。
这样,构建将始终运行主构建的antrun,并根据条件,相关配置文件中的antrun。
基于您的初始示例:
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>antCopyResources</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
...
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>prod</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>prodTokenReplace</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
...
</plugin>
</plugins>
</build>
</profile>
<profiles>
我希望这会有所帮助。
答案 1 :(得分:0)
您可以按原样保留默认值,并将ant-run插件配置从默认值复制到prod,这样您就可以在prod中使用两个插件配置,例如:
<profile>
<id>prod</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>antCopyResources</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
...
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>prodTokenReplace</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
...
</plugin>
</plugins>
</build>
</profile>