我有一个 Java 项目,在mvn install
其上执行时会生成一个 JAR 文件。到目前为止,一切都很好。
在那一代之后,我想将生成的 JAR 文件重命名为具有任意扩展名的东西。例如,假设生成的 JAR 名为“Foo.jar”,我想将其重命名为“Foo.baz”
我正在尝试确定可以让我执行此操作的神奇插件组合。到目前为止,我已经尝试了以下,基于这个SO 答案:
<project>
...
<build>
<finalName>Foo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy file="${project.build.directory}/${project.build.finalName}.jar"
tofile="${project.build.directory}/${project.build.finalName}.baz" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>attach-instrumented-jar</id>
<phase>verify</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${project.build.finalName}.baz</file>
<type>baz</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
所以,有两件事。首先,上述插件似乎并没有真正做任何事情。另外,我不清楚第二个插件试图完成什么。
我还尝试与上述插件分开在汇编中执行此操作,但效果并不好。我的程序集文件(请注意,我没有包含插件,因为它完全是样板文件):
<assembly xmlns="http://maven.apache.org/xsd/assembly"
xsi:schemaLocation="http://maven.apache.org/xsd/assembly-1.0.0.xsd">
<id>dist</id>
<formats>
<format>jar</format>
<format>dir</format>
</formats>
<files>
<file>
<source>${project.build.directory}/${project.build.finalName}.${packaging}</source>
<outputDirectory>${project.build.directory}</outputDirectory>
<destName>${project.build.finalName}.baz</destName>
</file>
</files>
</assembly>
但是,尝试运行此程序集会导致:无法创建程序集:创建程序集存档 dist 时出错:zip 文件无法包含自身
所以,在这一点上,我不知所措。经过大约一个小时的谷歌搜索,我觉得 ant 脚本是解决这个问题的方法,但我无法开始告诉你为什么它不起作用。
任何帮助表示赞赏。