更改 jar 文件名以输出 maven jar-with-dependencies?
Change jar filename for output of maven jar-with-dependencies?
我使用 maven-assembly-plugin jar-with-dependencies
descriptorRef
创建了一个包含多个项目代码的 JAR,如下所述:Including dependencies in a jar with Maven.
但是如何让它生成输出文件 foo-1.0.jar
而不是丑陋的 foo-1.0-SNAPSHOT-jar-with-dependencies.jar
?我不需要不包含其他项目的默认 JAR。
在 maven-assembly-plugin 中你可以添加一个名为 appendAssemblyId 的可选参数(默认设置为 true)程序集执行的 configuration 标记。
使用此标记将生成两个警告,表明您可能会覆盖工件的主要构建(由 maven-jar-plugin 完成)。
如果您不想通过 appendAssemblyId 设置为 false 来覆盖此 jar,您可以决定在另一个中构建程序集属性 outputDirectory 文件夹。
或者,如果您同意在 jar 名称末尾附加一些内容,那么另一种解决方案是创建您自己的程序集描述符。
(有关现有参数或如何创建自己的程序集描述符的更多信息,您可以在此处查看插件文档:https://maven.apache.org/plugins/maven-assembly-plugin/assembly-mojo.html)
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.3</version>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
<outputDirectory>${project.build.directory}/my-assembly/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
编辑:我编辑了我的答案以使其更完整。
这是我最后做的。在我的 pom.xml
:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.3</version>
<executions>
<execution>
<id>all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>all.xml</descriptor>
</descriptors>
</configuration>
</plugin>
我指定了一个自制的程序集描述符,我通过将程序集文件 jar-with-dependencies.xml
从 https://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html 复制到本地文件 all.xml
,更改 id
jar-with-dependencies
到 all
。瞧,现在生成的文件名是 foo-1.0-SNAPSHOT-all.jar
,适合我的目的。
我使用 maven-assembly-plugin jar-with-dependencies
descriptorRef
创建了一个包含多个项目代码的 JAR,如下所述:Including dependencies in a jar with Maven.
但是如何让它生成输出文件 foo-1.0.jar
而不是丑陋的 foo-1.0-SNAPSHOT-jar-with-dependencies.jar
?我不需要不包含其他项目的默认 JAR。
在 maven-assembly-plugin 中你可以添加一个名为 appendAssemblyId 的可选参数(默认设置为 true)程序集执行的 configuration 标记。
使用此标记将生成两个警告,表明您可能会覆盖工件的主要构建(由 maven-jar-plugin 完成)。
如果您不想通过 appendAssemblyId 设置为 false 来覆盖此 jar,您可以决定在另一个中构建程序集属性 outputDirectory 文件夹。
或者,如果您同意在 jar 名称末尾附加一些内容,那么另一种解决方案是创建您自己的程序集描述符。
(有关现有参数或如何创建自己的程序集描述符的更多信息,您可以在此处查看插件文档:https://maven.apache.org/plugins/maven-assembly-plugin/assembly-mojo.html)
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.3</version>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
<outputDirectory>${project.build.directory}/my-assembly/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
编辑:我编辑了我的答案以使其更完整。
这是我最后做的。在我的 pom.xml
:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.3</version>
<executions>
<execution>
<id>all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>all.xml</descriptor>
</descriptors>
</configuration>
</plugin>
我指定了一个自制的程序集描述符,我通过将程序集文件 jar-with-dependencies.xml
从 https://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html 复制到本地文件 all.xml
,更改 id
jar-with-dependencies
到 all
。瞧,现在生成的文件名是 foo-1.0-SNAPSHOT-all.jar
,适合我的目的。