我已经有maven build 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平台?
答案 0 :(得分:1)
所以最后我根据@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>
答案 1 :(得分:1)
仅为了信息而发布替代方案,希望您不要介意。基本上你可以通过使用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>