最近在做项目的自动化部署的过程中,需要在每个jar中的MANIFEST.MF文件中增加一些属性,由于项目是用MAVEN管理,打jar包也是用MAVEN的maven-jar-plugin插件完成,查看了maven-jar-plugin插件的官网介绍,默认生成的MANIFES.MF文件中只包括以下几项
Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Created-By: Apache Maven Built-By: ${user.name} Build-Jdk: ${java.version} 但是如果我需要在MANIFES.MF中新增一个属性该怎么增加呢? 比如说要增加一个test:testattr 其中testaatr值可以动态传入 在官网上没有找到相关的资料,通过查看源码才知道到,其实很简单。 真正生成文件其实是在maven-archiver jar中,查看org.apache.maven.archiver.MavenArchiver就知道,系统怎么得到,${user.name}的值,源码如下: private void addCustomEntries(Manifest m, Map entries, ManifestConfiguration config) throws ManifestException { addManifestAttribute(m, entries, "Built-By", System.getProperty("user.name")); addManifestAttribute(m, entries, "Build-Jdk", System.getProperty("java.version")); if (config.getPackageName() != null) { addManifestAttribute(m, entries, "Package", config.getPackageName()); } } 仔细查看该类的源码,就知道怎么往MANIFES.MF文件中增加自己特有的属性了,如增加上边的test属性,只要对插件进行如下配置 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <archive> <manifestEntries> <test:>${testAttr}</YP3G-Version> </manifestEntries> </archive> </configuration> </plugin> 同时,在用maven打jar包的时候,用mavn -DtestAttr=“test”(用-D选项) 这样在打出的jar包的 MANIFES.MF中就会增加test:test 这行属性。