是否有可能重命名一个maven jar

我目前正在使用jar-with-dependencies程序集来创建这样一个jar。 但是,我的jar的名字有点长。

由于这个jar被AS400上的RPG程序所使用,我想缩短它以使这些开发者的生活变得更容易一些。 但是,除了手工之外,我还没有找到一种方法来从通常的project-name-version-classifier-jar-with-dependencies.jar重命名jar。 我想要像project-name-version-classifier-full.jar这样的东西

无论如何不这样做基本上复制jar-with-dependencies程序集描述符并将其调用完成?

另外,我想继续保存未存储在存储库中的类路径的jar。

我需要两件神器。 与我的分类器持有该建设的区域的罐子。 具有所有依赖项的jar也包含该区域。

project-name-version-region-full.jarproject-name-version-region.jar应存储在存储库中。 在第一个例子中,分类器是区域满的,在第二个区域。 后者正在工作。


您可以指定finalName属性来为该jar提供所需的名称,并指定appendAssemblyId应该为false以避免“jar-with-dependencies”后缀。

下面的配置将输出一个名为“test.jar”的jar

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.2-beta-4</version>
  <executions>
    <execution>
      <id>jar-with-dependencies</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <finalName>test</finalName>
        <appendAssemblyId>false</appendAssemblyId>
      </configuration>
    </execution>
  </executions>
</plugin>

更新:根据您的意见,使用内置描述符将不起作用。 我相信这是最近版本的assembly-plugin中的一个错误 - 他们已经删除了对分类器的支持,但是如果使用内置描述符,则id是固定的,因此最终会得到一个很大的daft名称。

作为一种解决方法,您可以复制jar-with-dependencies描述符所使用的程序集描述符并修改该id。

这个例子会导致程序集标识符被追加到finalName中,所以如果你需要有一个region-full.jar的名字,你可以指定finalName作为区域,程序集标识符为full。 这将导致名为region-full.jar的目标文件,但请注意,它仍将作为附加工件安装到Maven存储库中,并充分用作分类器。 只要这个id与你的其他装配不同,就不应该有碰撞。

POM配置看起来像这样。

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.2-beta-4</version>
  <executions>
    <execution>
      <id>jar-with-dependencies</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      <configuration>
        <descriptors>
          <descriptor>src/main/assembly/jar-assembly.xml</descriptor>
        </descriptors>
        <finalName>region</finalName>
      </configuration>
    </execution>
  </executions>
</plugin>

和src / main / assembly中的jar-assembly.xml如下所示:

<assembly>
  <id>full</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <unpack>true</unpack>
      <scope>runtime</scope>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <directory>${project.build.outputDirectory}</directory>
    </fileSet>
  </fileSets>
</assembly>

我想我已经找到了一种方法来直接在pom中配置它,而不需要单独的jar-assembly.xml。

它与Rich的答案基本相同,只是使用artifactId和version指定了finalName。

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <finalName>${project.artifactId}-${project.version}-full</finalName>
        <appendAssemblyId>false</appendAssemblyId>
        <archive>
            <manifest>
                <mainClass>com.mycompany.MyMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>make-my-jar-with-dependenciess</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

感谢这里的帖子和一些挖掘maven文档的内容,我已经提出了以下配置,用于使用自定义名称的常规一次性重新打包可执行jar程序集。

在pom.xml中:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2</version>
    <executions>
        <execution>
            <id>exe</id>
            <phase>package</phase>
            <goals><goal>single</goal></goals>
            <configuration>
                <finalName>MyJarName</finalName>
                <attach>false</attach>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <descriptor>assembly.xml</descriptor>
                </descriptors>
                <archive>
                    <manifest>
                        <mainClass>karlthepagain.MyMain</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </execution>
    </executions>
</plugin>

在assembly.xml中:

<assembly>
    <id>exe</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <unpack>true</unpack>
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets>
</assembly>

这将生成MyJarName.jarMyJarName.jar其所有依赖项重新打包到同一个jar和指定的Main-Class: karlthepagain.MyMain

链接地址: http://www.djcxy.com/p/29677.html

上一篇: Is it possible to rename a maven jar

下一篇: Maven Modules + Building a Single Specific Module