我在 pom.xml :
中有以下结构<profile>
<id> x </id>
<build>
<finalName> y </finalName>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<!-- DELETE SOME FOLDERS AND SOME FILES -->
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<!-- MOVE A FILE -->
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version> 1.6 </version>
<executions>
<execution>
<phase> <!-- WHAT COMES HERE ? --> </phase>
<configuration>
<!-- I EXECUTE CMD FILE HERE -->
</configuration>
<goals>
<goal> run </goal>
</goals>
<execution>
<executions>
</plugin>
</plugins>
</build>
</profile>
我想实现插件的串行执行:
我应该使用<phase>
来获得上述顺序(顺序执行)?它有关系吗?例如,可以使用pre-integration-test
吗?
P.S。:以下是阶段:http://maven.apache.org/ref/3.2.2/maven-core/lifecycles.html
答案 0 :(得分:1)
Maven不支持在生命周期中添加步骤(无需编写新插件)。
如果您有复杂的构建步骤,并且您绝对需要某个订单和,此订单会违反标准生命周期,那么Maven可能不适合您。请改为考虑Gradle。
如果您必须使用Maven,请停止使用插件。相反,使用antrun插件复制所有构建步骤,因此所有操作都使用单个Ant脚本完成。然后,在生命周期中找到您希望一次执行所有步骤的位置。
如果在编译任何内容之前需要完成某些事情, generate-sources
是个好地方。如果要在编译和测试后运行代码,请使用prepare-package
。
请参阅此处查看完整的生命周期:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
答案 1 :(得分:1)
如果您想将不同插件的执行添加到同一生命周期阶段,则执行顺序由pom文件中定义的顺序定义。
因此,如果您选择将上述所有三个插件绑定到package
阶段,那么它们将按照给定的顺序执行。
您当然可以使用antrun插件,该插件也可以使用,并且将隐式执行已定义顺序中的步骤,而无需考虑Maven的默认行为。
您还可以使用exec-maven-plugin在特定生命周期阶段执行脚本,但这可能不是一个好的解决方案,因为脚本依赖于操作系统。或者你可以使用groovy插件在groovy代码中执行一些步骤。