在 Maven 中,如何在版本中命名战争文件与在快照构建中不同

Posted

技术标签:

【中文标题】在 Maven 中,如何在版本中命名战争文件与在快照构建中不同【英文标题】:In maven, how to name war file different in release than in snapshot build 【发布时间】:2014-08-25 17:00:44 【问题描述】:

我正在使用 maven-war 插件。我还查看了 maven-versions 插件。在这两种情况下,我都看不到如何为快照构建提供与发布构建不同的名称。

我看过使用配置文件的示例,但文档似乎表明在 pom.xml 中使用配置文件不是一个好主意。

这应该怎么做?

【问题讨论】:

您还会在哪里使用个人资料? 通常会将版本号放在工件名称上,从而区分它。 顺便说一句:配置文件“仅”属于 pom。 为什么要在 SNAPSHOT 或版本之间更改名称?您只能通过<finalName>...</finalName> 在目标文件夹中将其命名为不同的一件事,否则它没有意义。您能否详细说明您的问题是什么或您的目的是什么? 【参考方案1】:

试试下面的

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <webXml>src\main\webapp\WEB-INF\web.xml</webXml>        
          <classifier>$envClassifier</classifier>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>snapshot</id>
      <properties>
        <envClassifier>snapshot</envClassifier>
      </properties>
    </profile>
    <profile>
      <id>release</id>
       <properties>
        <envClassifier>release</envClassifier>
      </properties>
    </profile>
  </profiles>

现在,运行命令 mvn clean install -Psnapshotmvn clean install -Prelease 以获取所需的工件。希望这会有所帮助

【讨论】:

【参考方案2】:

你可以通过warName属性控制最终的war文件名

【讨论】:

以上是关于在 Maven 中,如何在版本中命名战争文件与在快照构建中不同的主要内容,如果未能解决你的问题,请参考以下文章

Maven:如何获取在 WEB-INF 中复制的资源的战争包?

如何在使用 maven 构建的战争中包含系统依赖项

如何使用 maven 中的 tomcat 插件部署多个战争?

在没有 maven 的情况下启动码头的可执行战争文件

如何让 Maven 将战争常见的所有罐子放在同一个 EAR 到 EAR 根目录中?

带有 <systemPath> 标记的 Maven 项目 POM 中的条目未包含在生成的战争文件 WEB-INF\lib 文件夹中