Maven:如何为项目重命名war文件?


91

我有一个项目,bird其中包含以下组件pom.xml

   <groupId>com.myorg</groupId>
    <artifactId>bird</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>bird</name>

    <modules>
        <module>persistence</module>
        <module>business</module>
        <module>service</module>
        <module>web</module>
    </modules>

和网络模块为

   <parent>
        <artifactId>bird</artifactId>
        <groupId>com.myorg</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>web</artifactId>
    <packaging>war</packaging>  

Web模块创建名为war的战争文件,web-1.0-SNAPSHOT.war
如何使用maven将其重命名为bird.war


Answers:


205

您可以在产生战争的Web模块中使用以下命令:

<build>
  <finalName>bird</finalName>
 . . .
</build>

这将导致在使用目标“ war:war”时创建一个名为bird.war的文件。


当我使用“ bird.war”名称编译项目时,会收到名为“ bird.war.war”的战争。
卡拉奇尼2014年

@Kalaschni只是使用“ bird”,而不是“ bird.war”-每个构建插件都会自动添加适当的文件扩展名(war,jar,ear)
ZachOfAllTrades 2014年

11
或更笼统地说,我们可以使用:<finalName>${project.artifactId}</finalName>
纪尧姆·休斯塔

这个答案解决了我的问题,其中子模块的争斗是使用父级的名称生成的,而这是我所不希望的。问题是在父POM中设置了<finalName>元素。删除该元素会导致使用正确的子模块名称生成战争文件。
奥利弗·埃尔南德斯

在IDEA 20156 2.4中,我遇到的另一个问题是,每次我尝试在Payara Glassfish 4.1上进行部署时,它都会继续生成旧的war文件。发生这种情况时,请转到“打开模块设置”->“工件”->“输出布局”,然后将war文件重命名为所需的结果。我之所以需要这样做,是因为IDEA中的上下文根目录使用war文件名进行了更改,如果在.properties文件中配置了其他文件,这会很麻烦。
Dr4gon

25

您需要配置war插件:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <warName>bird.war</warName>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

更多信息在这里


11
仅供参考:此答案不再有效(因为maven-war-plugin版本3.0.0及更高版本)。参见issue.apache.org/jira/browse/MWAR-373
2016年

<warName>可以工作(至少在3.2.3的war-plugin中可用),但是它总是附加“-<classifier> .war”,其中<classifier>默认为空,并且可以在<configuration>中设置。我将<warName> $ {project.build.finalName} ## $ {buildDateTimeFile} </ warName>与build-helper-maven-plugin设置的“ buildDateTimeFile”一起使用,以获取“ myApp ## 2020-05-29_10-24- 00.war”。如果您一次创建多个war文件(dev / test / prod),这将特别有用。
Thies

6

如果使用的是maven项目,则可以按照以下步骤修改.war文件名。

打开您的Maven项目的pom.xml文件,然后转到标记<build></build>

  1. 在该标签之间输入所需的名称: <finalName></finalName>

    例如 :<finalName>krutik</finalName>

    部署此.war之后,您将可以使用以下地址访问URL:
    http:// localhost:8080 / krutik /

  2. 如果要使用斜杠“ /”访问URL则必须指定名称,如下所示:

    例如: <finalName>krutik#maheta</finalName>

    部署此.war之后,您将可以使用以下地址访问URL:
    http:// localhost:8080 / krutik / maheta


5

查找pom.xml>项目标签>构建标签。

我想要下面的解决方案。

<artifactId>bird</artifactId>
<name>bird</name>

<build>
    ...
    <finalName>${project.artifactId}</finalName>
  OR
    <finalName>${project.name}</finalName>
    ...
</build>

为我工作。^^

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.