首页 文章

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

提问于
浏览
39

我在maven有一个包含5个模块的项目 . 现在,当我进行“mvn clean install”时,它会生成一个包含两个 jar 的耳朵,一个战争和一个来自其他模块的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

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

3 回答

  • 20

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

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

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

    Point one : single JAR/WAR.

    要在名称中创建没有版本号的文件,请在pom.xml中添加以下代码:

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

    因此,如果您编译,例如projectx_misc,则会获得projectx_misc.jar .

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

    So, point two: the EAR problem.

    在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中删除 .

相关问题