我在 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,所有的版本号从罐中取出。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top