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

发布于 2024-08-21 01:56:58 字数 479 浏览 11 评论 0原文

我在 Maven 中有一个包含 5 个模块的项目。现在,当我执行“mvn clean install”时,它会生成一个包含两个 jar 的耳朵,一个是来自其他模块的 war 和一个 sar。

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

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

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

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

I have a project with 5 modules in maven. Right now, when I do a "mvn clean install", it generates an ear containing the two jars, one war and one sar from the other modules.

All the file names contain the version, e.g., projectx-ear-2.0.0.ear, projectx-client-2.0.0.jar, etc.

I need to rename one of the jars and the final ear to omit the version in the file name. It should look like this:

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

Right now I'm using the following plugins to build:
maven-compiler-plugin and maven-release-plugin

What would be the best way to achieve the results I expect?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

痴意少年 2024-08-28 01:56:58

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

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

You can achieve this by specifying the finalName property in your pom like this:

<build>
    <finalName>${project.artifactId}</finalName>
</build>
吃不饱 2024-08-28 01:56:58

在您的ear模块中,您可以使用 project.build.finalName 元素,也可以配置 maven-ear-plugin 支持 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>

In your ear module, you can either use the project.build.finalName element or you can configure the maven-ear-plugin which supports a finalName optional parameter. And to configure the final name of a bundled jar, you'll need to define a jarModule and to set the bundleFileName property for it.

The final configuration might looks something like that (I'll demonstrate how to set the the final ear name in the plugin configuration here):

<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>
挖鼻大婶 2024-08-28 01:56:58

第一点:单个 JAR/WAR。

要创建名称中没有版本号的项目,只需在 pom.xml 中添加以下代码:

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

因此,如果您编译,例如 projectx_misc,您将获得 projectx_misc。罐子

我怎么了?当我从 POM 项目(在 Netbeans 中)编译相同的包时,所有 jar 的名称中都包含版本,并且 EAR 包含 xxx-version.jar 档案。

所以,第二点:EAR 问题。

在 EAR 的 pom.xml 文件中,更改 maven-ear-plugin 在配置中添加此属性:

<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 中的所有档案时,所有版本号都会从 jar 中删除。

Point one : single JAR/WAR.

To create it without version number in name, in pom.xml simply add the code:

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

So, if you compile, for example projectx_misc, you get projectx_misc.jar .

What happens to me? When I compile the same package from a POM project (in Netbeans), all the jars have the version in the name and the EAR include the xxx-version.jar archives.

So, point two: the EAR problem.

In the EAR's pom.xml file, change the maven-ear-plugin adding in the configuration this property:

<fileNameMapping>no-version</fileNameMapping>

This is my plugin setting for example:

<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>

So, now when i compile all the archives from a project pom, all the version numbers are removed from the jars.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文