用于操作现有 jar 的 Maven 插件
Maven plugin to manipulate existing jar
我已经有 maven 构建 pom(稍微复杂),它为我的项目创建编译和准备好的 jar 文件。我使用目标部分中的副本使用 maven-antrun-plugin 将该文件复制到各个目的地。
我想要实现的是在每个副本中更改清单文件(向其中添加一些内容)。例如:
prepared.jar -- 复制到 --> /linux/prepared-linux.jar(与 prepared.jar 内容相同,但清单包含 linux 特有的内容)
prepared.jar -- 复制到 --> /win64/prepared-win64.jar(与 prepared.jar 内容相同,但清单包含 windows 特有的内容)
我不想多次创建prepared.jar,只是复制它并在副本中更改清单。有没有人知道一些兼容 maven 3.1 的插件,它能够做到这一点并且易于配置并且可以在 windows 和 linux 平台上工作?
所以最后我能够根据@RC 的评论自己解决它。通过查看此处 Simpliest way to add an attribute to a jar Manifest in Maven,解决方案是在复制元素之后向我的 pom 文件添加类似内容:
<jar file="${install.dir}/linux/${program.name}.jar" update="true">
<manifest>
<attribute name="my specific linux att" value="my specific linux value" />
</manifest>
</jar>
发布替代方案仅供参考,希望您不要介意。基本上你可以通过多次执行使用 maven-jar-plugin 来实现相同的效果,比如
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>only-library</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
</execution>
<execution>
<id>linux</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
<configuration>
<classifier>linux</classifier>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<yourKey>linux</yourKey>
</manifestEntries>
</archive>
</configuration>
</execution>
<execution>
<id>win64</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
<configuration>
<classifier>win64</classifier>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<yourKey>win64</yourKey>
</manifestEntries>
</archive>
</configuration>
</execution>
</executions>
</plugin>
我已经有 maven 构建 pom(稍微复杂),它为我的项目创建编译和准备好的 jar 文件。我使用目标部分中的副本使用 maven-antrun-plugin 将该文件复制到各个目的地。
我想要实现的是在每个副本中更改清单文件(向其中添加一些内容)。例如:
prepared.jar -- 复制到 --> /linux/prepared-linux.jar(与 prepared.jar 内容相同,但清单包含 linux 特有的内容)
prepared.jar -- 复制到 --> /win64/prepared-win64.jar(与 prepared.jar 内容相同,但清单包含 windows 特有的内容)
我不想多次创建prepared.jar,只是复制它并在副本中更改清单。有没有人知道一些兼容 maven 3.1 的插件,它能够做到这一点并且易于配置并且可以在 windows 和 linux 平台上工作?
所以最后我能够根据@RC 的评论自己解决它。通过查看此处 Simpliest way to add an attribute to a jar Manifest in Maven,解决方案是在复制元素之后向我的 pom 文件添加类似内容:
<jar file="${install.dir}/linux/${program.name}.jar" update="true">
<manifest>
<attribute name="my specific linux att" value="my specific linux value" />
</manifest>
</jar>
发布替代方案仅供参考,希望您不要介意。基本上你可以通过多次执行使用 maven-jar-plugin 来实现相同的效果,比如
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>only-library</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
</execution>
<execution>
<id>linux</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
<configuration>
<classifier>linux</classifier>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<yourKey>linux</yourKey>
</manifestEntries>
</archive>
</configuration>
</execution>
<execution>
<id>win64</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
<configuration>
<classifier>win64</classifier>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<yourKey>win64</yourKey>
</manifestEntries>
</archive>
</configuration>
</execution>
</executions>
</plugin>