我试图在"始终活动"的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)
我知道这是一个迟来的答案,但它可能会帮助其他人。
我有一个类似的案例,我通过将执行的公共(activeByDefault)部分放在profiles部分之外和build主部分中来解决。
这样,构建将始终运行主构建的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>
我希望这能有所帮助。
您可以保持默认值不变,并将ant运行的插件配置从默认值复制到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>