使用 Maven 从文件名中删除版本号

2022-08-31 22:40:47

我有一个项目,在maven中有5个模块。现在,当我进行“mvn干净安装”时,它会生成一个包含两个罐子的耳朵,一个来自其他模块的war和一个sar。

所有文件名都包含版本,例如,projectx-ear-2.0.0.ear,projectx-client-2.0.0.jar等。

我需要重命名其中一个jar和最后一个耳朵,以省略文件名中的版本。它应该看起来像这样:

projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
\-- projectx-web-2.0.0.web

现在我使用以下插件来构建:maven-compiler-plugin和maven-release-plugin

实现我所期望的结果的最佳方法是什么?


答案 1

您可以通过在 pom 中指定属性来实现此目的,如下所示:finalName

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

答案 2

在 ear 模块中,您可以使用该元素,也可以配置支持 finalName 可选参数的 maven-ear-plugin。要配置捆绑 jar 的最终名称,您需要定义 jarModule 并为其设置属性。project.build.finalNamebundleFileName

最终配置可能看起来像这样(我将演示如何在此处的插件配置中设置最终的 ear 名称):

<project>
  [...]
  <dependencies>
    <dependency>
      <groupId>yourgroupid</groupId>
      <artifactId>projectx-client</artifactId>
      <version>2.0.0</version><!-- not mandatory if inherited -->
    </dependency>
    [...]
  </dependencies>
  [...]  
  <build>
    [...]
    <plugins>
      [...]
      <plugin>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <finalName>projectx-ear</finalName>
          <modules>
            <jarModule>
              <groupId>yourgroupid</groupId>
              <artifactId>projectx-client</artifactId>
              <bundleFileName>anotherName.jar</bundleFileName>
            </jarModule>
          </modules>
        </configuration>
      </plugin>
      [...]
</project>

推荐