2

对于 Maven 构建,我需要在使用 war 插件创建爆炸目录后复制一些文件。是否可以在战争期间/之后运行 antrun 插件:爆炸目标?如果是这样,我会怎么做?我试过了:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-antrun-plugin</artifactId>
      <executions>
        <execution>
          <phase>war</phase>
          <goals>
            <goal>exploded</goal>
          </goals>
          <configuration>
            <tasks>
              <echo>Running ant task...</echo>
            </tasks>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

还有其他几个变体,但似乎无法让它运行。

理想情况下,如果我也进行完整的战争,我希望蚂蚁任务运行:战争,但当我遇到它时,我会越过这座桥。

4

1 回答 1

1

至少有两种方法可以实现它:

使用插件的直接调用

调用mvn war:explodedodermvn war:war时,您只调用特定插件的特定目标。没有执行其他插件。pom.xml 中定义的执行不相关。因此,您只能直接调用几个插件目标,例如mvn war:exploded antrun:run.

但是在构建多个模块时要小心:mvn war:exploded antrun:run在每个模块的 war 插件之后运行 antrun。而mvn war:exploded; mvn antrun:run为所有模块运行war插件,然后为所有模块运行antrun。

使用插件的生命周期绑定

调用时,您将默认生命周期mvn pre-integration-test的所有阶段调用到 pre-integration-test。您可以在“package”阶段为目标“exploded”定义一个war插件执行,在“pre-integration-test”阶段为目标“run”定义一个antrun执行。


默认生命周期中没有阶段“战争”。因此,您上面的示例不适用于默认生命周期。对于具有自定义阶段的自定义生命周期,您需要自定义插件。

于 2011-04-01T13:42:21.813 回答