在maven中 - 如何根据正在使用的配置文件的名称重命名输出.war文件

ben*_*rre 34 war maven

我的pom.xml中有三个配置文件用于我们的应用程序...

  1. dev(用于开发人员)
  2. qa(用于我们的内部qa服务器)
  3. 刺激(生产).

当我们运行maven构建时,所有三个配置文件都输出一个具有相同名称的war文件.我想输出$profilename-somearbitraryname.war

有任何想法吗?

Tom*_*icz 60

你已经正确回答了自己:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <rp.build.warname>dev</rp.build.warname>
        </properties>
    </profile>
    <profile>
        <id>qa</id>
        <properties>
            <rp.build.warname>qa</rp.build.warname>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <rp.build.warname>prod</rp.build.warname>
        </properties>
    </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)

但是有一种更简单的方法可以重新定义WAR名称:

<build>
    <finalName>${rp.build.warname}-somearbitraryname</finalName>
    <!-- ... -->
</build>
Run Code Online (Sandbox Code Playgroud)

不需要maven-war-plugin.

  • 不错的提示,但是标准Maven文档,配置文件不应该用于产生不同的输出.否则,正如我所见,编辑变得不必要地复杂化. (2认同)

ben*_*rre 25

答案很简单......

在每个配置文件中定义一个属性,如...

<profile>
    <id>qa</id>
    <properties>
        <rp.build.warname>ourapp-qa</rp.build.warname>
    </properties>
</profile>
Run Code Online (Sandbox Code Playgroud)

然后将其添加到您的插件中......

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <packagingExcludes>WEB-INF/web.xml</packagingExcludes>
        <warName>${rp.build.warname}</warName>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

  • 注意:maven-war-plugin 3.0.0中不再提供此配置. (2认同)