gpt4 book ai didi

maven - 在war打包之前在maven构建阶段运行ant任务?

转载 作者:行者123 更新时间:2023-12-02 16:20:35 24 4
gpt4 key购买 nike

部署Web应用程序时,我需要更新UI资源中的一些变量,解压一些 Assets 并连接一些文件,目前这是通过ant任务实现的。我正在尝试使用类似这样的东西在 Maven 构建过程中运行此任务...

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>deploy-ui</id>
<phase>prepare-package</phase>
<inherited>false</inherited>
<configuration>
<target>
<property name="buildDir" value="${project.build.directory}/${project.build.finalName}" />
<ant antfile="build.xml" target="static-assets" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

上述操作失败,因为文件尚未复制到目标目录中。如果我将阶段设置为“打包”,则 ant 任务运行良好,并且所有文件都已创建/修改,但这没有帮助,因为 .war 在 ant 目标运行之前已经构建。

基本上,我需要在准备包阶段结束时运行我的 ant 目标。

查看了 Lifecycle Reference我无法研究如何向 antrun 插件公开更细粒度的目标。

有什么想法吗?

最佳答案

由于我的评论没有得到任何答复,我猜您想继续使用 maven-antrun-plugin .

根据我的学习和经验,如果两个插件要在同一阶段执行,那么它们将按照pom.xml中声明的顺序执行。 .

为此,您必须添加 maven-war-plugin<plugins/> maven-antrun-plugin 之后的列表.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>deploy-ui</id>
<phase>package</phase>
<inherited>false</inherited>
<configuration>
<target>
<property name="buildDir" value="${project.build.directory}/${project.build.finalName}" />
<ant antfile="build.xml" target="static-assets" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<!-- First step is to disable the default-war build step. -->
<id>default-war</id>
<phase>none</phase>
</execution>
<execution>
<!-- Second step is to create an exploded war. Done in prepare-package -->
<id>war-exploded</id>
<phase>prepare-package</phase>
<goals>
<goal>exploded</goal>
</goals>
</execution>
<execution>
<!-- Last step is to make sure that the war is built in the package phase -->
<id>custom-war</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
</execution>
</executions>
</plugin>
<小时/>

添加了更多执行,以便 default-war先禁用,然后 war 爆发,最后 war 打包。

关于maven - 在war打包之前在maven构建阶段运行ant任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com