【问题标题】:Maven: How to rename the war file for the project?Maven:如何重命名项目的war文件?
【发布时间】:2013-01-23 20:13:09
【问题描述】:

我有一个项目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>

和网络模块pom.xml

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

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

网络模块创建一个名为web-1.0-SNAPSHOT.war的war文件
如何配置 maven 以将其构建为 bird.war?

【问题讨论】:

标签: java maven


【解决方案1】:

您可以在产生战争的网络模块中使用以下内容:

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

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

【讨论】:

  • 当我用名称“bird.war”编译我的项目时,我得到一个名为“bird.war.war”的战争。
  • @Kalaschni 只使用“bird”,而不是“bird.war”——各种构建插件中的每一个都会自动添加适当的文件扩展名(war、jar、ear)
  • 或者更一般地说,我们可以使用:&lt;finalName&gt;${project.artifactId}&lt;/finalName&gt;
  • 这个答案解决了我的问题,即使用父级名称生成子模块的战争,这是我不想要的。问题是在父 POM 中设置了 元素。删除该元素会生成带有正确子模块名称的 war 文件。
  • 在 IDEA 20156 2.4 中,我遇到了一个额外的问题,即每次我尝试在 Payara Glassfish 4.1 上部署时,它都会生成旧的战争文件。当发生这种情况时,请转到 Open Module Settings -> Artifacts -> Output Layout 并将war文件重命名为您想要的结果。我需要这个,因为上下文根会随着 IDEA 中的 war 文件名而变化,当您在 .properties 文件中配置不同的文件时,这会很痛苦。
【解决方案2】:

需要配置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>

更多信息here

【讨论】:

  • 仅供参考:这个答案不再有效(因为 maven-war-plugin 版本 3.0.0 及更高版本)。见issues.apache.org/jira/browse/MWAR-373。
  • 有效(至少在 3.2.3 的 war-plugin 中),但它总是附加“-.war”,其中 默认为空,可以在 中设置配置>。我使用 ${project.build.finalName}##${buildDateTimeFile} 和 build-helper-maven-plugin 设置的“buildDateTimeFile”来获取“myApp##2020-05-29_10-24- 00.战争”。如果您一次创建多个战争文件 (dev/test/prod),这将特别有用。
【解决方案3】:

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

我想要下面的解决方案。

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

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

为我工作。 ^^

【讨论】:

    【解决方案4】:

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

    打开你的maven项目的pom.xml文件,进入标签&lt;build&gt;&lt;/build&gt;,

    1. 在此标签之间给出您想要的名称: &lt;finalName&gt;&lt;/finalName&gt;.

      例如。 :&lt;finalName&gt;krutik&lt;/finalName&gt;

      部署此 .war 后,您将能够通过以下方式访问 url:
      http://localhost:8080/krutik/

    2. 如果您想使用斜杠 '/' 访问网址,那么您将拥有 然后指定如下名称:

      例如:&lt;finalName&gt;krutik#maheta&lt;/finalName&gt;

      部署此 .war 后,您将能够通过以下方式访问 url:
      http://localhost:8080/krutik/maheta

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 2022-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 2011-09-02
      相关资源
      最近更新 更多