Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 如何强制maven在具有子模块的POM中的所有包任务之后执行antrun:run任务?_Maven 2 - Fatal编程技术网

Maven 2 如何强制maven在具有子模块的POM中的所有包任务之后执行antrun:run任务?

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

我有一个父POM和一堆子模块。 我想在所有的孩子都执行了包任务后运行antrun:run任务(自从我放弃思考如何让程序集正常工作以来,我正在使用Ant来打包我的应用程序)

我需要在所有子项之后执行antrun任务,但我不能将其与包阶段相关联,因为父项在子项之前“打包”,我需要在子项之后运行ant

有没有一种方法可以在一个命令中完成

当然,简单的解决方法是运行2个maven命令:

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)只是告诉不能为当前插件的子插件执行插件