gpt4 book ai didi

java - 将 Maven 配置文件与 WAR 打包的产品一起使用

转载 作者:行者123 更新时间:2023-12-02 08:23:43 25 4
gpt4 key购买 nike

我们有一个 Maven 构建(版本 2.2.1),当前生成一个 WAR 文件。我们的输出目录是 target/,因此我们最终得到一个构建 Artifact target/MyWar.WAR

我将两个配置文件添加到 POM.xml 文件中,以促进特定的构建“风格”,每个配置文件都需要特定版本的 A.xml 文件。在中间构建目录target/MyWar/中有3个文件:

A.xml
A_1.xml
A_2.xml

在没有指定配置文件的情况下在 Maven 中构建应该使用 A.xml,目前也是如此。我想使用 maven-antrun-plugin (对于配置文件 1)将 A.xml 替换为 A_1.xml,对于配置文件 2 将 A.xml 替换为 A_2.xml。 (删除 _1 和 _2 后缀。)

这是配置文件 1 的执行示例:

<profile>
<id>Profile1</id>
<build>
...
<execution>
<id>Profile1-Replace</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete
file="${project.build.outputDirectory}/../MyWar/A.xml" />
<copy
file="${project.build.outputDirectory}/../MyWar/A_1.xml"
tofile="${project.build.outputDirectory}/../MyWar/A.xml" />
</tasks>
</configuration>
</execution>
...
</build>
</profile>

这正确地替换了中间 target/MyWar/目录中的文件,但无论出于何种原因,target 中生成的最终 WAR 并没有反射(reflect)这些更改。

就好像在“打包”阶段运行已经太晚了,而且 WAR 已经构建好了。将阶段更改为“编译”或“测试”(紧邻的前一个阶段)会提示,因为 A.xml 文件(和中间构建目录)尚未创建。

最佳答案

我建议改用process-resources阶段,甚至generate-resources,如果你觉得这样更合适的话。作为最后的手段,请使用prepare-package。但是package阶段不适合做这类事情。所有此类修改通常可能直接发生在源代码树中。

但是,如果您在单独的目录中进行文件操作,则可以使用 maven-war-plugin打包阶段添加它。如下:

  <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>A_variant</directory>
</resource>
</webResources>
</configuration>
</plugin>

当然,如果您需要走这条路,保留三个目录并在您的个人资料中选择合适的目录会更简单。

关于java - 将 Maven 配置文件与 WAR 打包的产品一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4964020/

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