12 java manifest.mf pom.xml maven
使用maven构建jar文件时,它将在META-INF/MANIFEST.MF中创建一个清单文件.其内容目前是:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: <my username>
Created-By: Apache Maven 3.1.0
Build-Jdk: 1.8.0_5
Run Code Online (Sandbox Code Playgroud)
如何隐藏清单条目?特别是我想隐藏"Built-By:"条目,因为我没有看到为什么jar应该包含我的用户名的任何理由.
在Maven的achiver插件文档似乎很清楚,你不能删除属性,如仅描述其设置为空白亚历克斯·切尔内绍夫的答案.为了更好地控制MANIFEST.MF,您不应该使用maven-archiver插件.
另一种方法是使用maven antrun插件和Ant Jar任务来构建Jar.
在pom.xml中:
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<jar destfile="test.jar" basedir=".">
<include name="build"/>
<manifest>
<attribute name="Manifest-Version:" value="1.0"/>
</manifest>
</jar>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用Maven exec插件直接调用Jar工具.
我不喜欢推荐antrun,因为我认为这是一个肮脏的黑客,但似乎maven-archiver不符合你的要求.可能值得提出maven-archiver的功能请求.
编辑:2014-10-06提出Jira MSHARED-362
编辑:2018-06-18:更新了Jira和Maven Exec插件的链接
编辑:2019-01-14:修复maven-archiver-3.4.0的目标
加
<addDefaultImplementationEntries>false</addDefaultImplementationEntries>
Run Code Online (Sandbox Code Playgroud)
在pom.xml中的maven-jar-plugin的configration部分完全删除默认属性:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>false</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
自定义它(仅删除用户名):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<Built-By></Built-By>
</manifestEntries>
</archive>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4790 次 |
最近记录: |