Maven 2 如何强制maven在具有子模块的POM中的所有包任务之后执行antrun:run任务?
我有一个父POM和一堆子模块。 我想在所有的孩子都执行了包任务后运行antrun:run任务(自从我放弃思考如何让程序集正常工作以来,我正在使用Ant来打包我的应用程序) 我需要在所有子项之后执行antrun任务,但我不能将其与包阶段相关联,因为父项在子项之前“打包”,我需要在子项之后运行ant 有没有一种方法可以在一个命令中完成 当然,简单的解决方法是运行2个maven命令:Maven 2 如何强制maven在具有子模块的POM中的所有包任务之后执行antrun:run任务?,maven-2,Maven 2,我有一个父POM和一堆子模块。 我想在所有的孩子都执行了包任务后运行antrun:run任务(自从我放弃思考如何让程序集正常工作以来,我正在使用Ant来打包我的应用程序) 我需要在所有子项之后执行antrun任务,但我不能将其与包阶段相关联,因为父项在子项之前“打包”,我需要在子项之后运行ant 有没有一种方法可以在一个命令中完成 当然,简单的解决方法是运行2个maven命令: mvn package; mvn antrun:run 但如果可能的话,我想一次完成 mvn package ant
mvn package; mvn antrun:run
但如果可能的话,我想一次完成
mvn package antrun:run
产生错误行为-它在子项目的包阶段之前运行antrun:run
理想情况下,我可以直接打字
mvn package
在所有子级上运行包阶段,然后在父级上运行antrun:run
我需要在所有子项之后执行antrun任务,但我不能将其与包阶段相关联,因为父项在子项之前“打包”,我需要在子项之后运行ant
创建另一个依赖于所有子模块的模块(这样它将是反应堆构建过程中的最后一个项目),并将antrun的内容绑定到此模块中的包上。然后从根项目运行mvn包。首先必须指定antrun插件。这将自动运行该插件
然后,您必须在antrun插件之前推动maven运行包插件。
当您将软件包插件设置放在antrun插件设置之前时,您可以这样做
设置示例:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase> package </phase>
<configuration>
<tasks>
<!--
Place any Ant task here. You can add anything
you can add between <target> and </target> in a
build.xml.
-->
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven战争插件
maven antrun插件
1.4
包裹
跑
Put
<inherited>false</inherited>
false
在插件定义中:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<phase>compile</phase>
<configuration>
<tasks>
<ant antfile="buildall.xml">
</ant>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
maven antrun插件
假的
编译
跑
我的POM中确实有您的上述设置,但我不太清楚您的意思:那么您必须在antrun插件之前推动maven运行package插件。当您将软件包插件设置放在antrun插件设置之前时,您可以这样做。我没有软件包插件的设置。。。那么我该如何将它推到更早呢?@toli:你不能“推”任何东西到更早,默认绑定(你不能“取消绑定”)将始终在之前运行,句号。而且没有软件包插件。天才!我想这不是最专业的方法,但它确实有效。有趣的是,我只是把我的新打包机模块放在模块列表的末尾,我甚至不需要依赖任何东西——它只是工作而已。谢谢你的建议。@toli:不客气。但是我强烈建议显式地声明依赖项,以便以可靠的方式计算构建顺序。它现在是“偶然”起作用的。是的。例如,如果您运行“mvn package-T4”来启用并行构建(实验功能),它可能会失败,因为某些依赖项将不可用。这很好,没有google copy rename、ant run、maven资源插件可以帮助我,这是我实现目标的唯一方法:在运行集成测试时将standalone.xml替换为开发人员版本。我认为这根本不能回答问题。继承(false)只是告诉不能为当前插件的子插件执行插件