使用 Maven 从文件名中删除版本号
-
19-09-2019 - |
题
我在 Maven 中有一个包含 5 个模块的项目。现在,当我执行“mvn clean install”时,它会生成一个包含两个 jar 的耳朵,一个是来自其他模块的 war 和一个 sar。
所有文件名都包含版本,例如projectx-ear-2.0.0.ear、projectx-client-2.0.0.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
实现我期望的结果的最佳方法是什么?
解决方案
在您的耳模块中,您可以使用 project.build.finalName
元素或者您可以配置 maven-ear-插件 它支持一个 finalName
可选参数。要配置捆绑 jar 的最终名称,您需要定义一个 jarModule
并设置 bundleFileName
为其财产。
最终的配置可能看起来像这样(我将演示如何在此处的插件配置中设置最终的耳朵名称):
<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>
其他提示
您可以通过在指定的pom像这样finalName
属性实现这一点:
<build>
<finalName>${project.artifactId}</finalName>
</build>
<强>点之一:单JAR / WAR 强>
要创建它没有名称的版本号,在pom.xml中只需添加的代码:
<build>
<finalName>${project.artifactId}</finalName>
</build>
所以,如果你编译,例如projectx_misc,你得到的 projectx_misc.jar 的。
我怎么了?当我编译从POM项目相同的包(在Netbeans中),所有的罐子具有名称和EAR版本包括XXX-version.jar档案
<强>因此,点2:该EAR问题强>
在EAR的pom.xml文件中,将行家入耳式插件在配置中添加此属性:
<fileNameMapping>no-version</fileNameMapping>
这是我的插件设置例如:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.8</version>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<fileNameMapping>no-version</fileNameMapping>
</configuration>
</plugin>
所以,现在当我编译所有的档案从项目POM,所有的版本号从罐中取出。