介绍
打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内 容,先来看struts.jar中包含的MANIFEST.MF文件内容:
就是项目打包后jar的一些信息描述,提供给开发者查看,还有java虚拟机执行等。
一般情况,都是maven install帮助开发者自动生成的这个文件,不用我们去管这个文件的编写,因为这个文件很容易写错,造成无法编译。
一般都是靠pom中的maven打包完成:
<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId></plugin></plugins>
或者依靠springboot的maven打包完成:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.5.4.RELEASE</version></plugin></plugins></build>
或者我们可以将打包好的jar包解压,进行修改该文件内容后,重新打包。
当然,我们可以使用pom.xml中的配置直接修改文件,例子如下:
在
<build><finalName>my-javaagent</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifestEntries><Agent-Class>me.geek01.javaagent.AgentMain</Agent-Class><Premain-Class>me.geek01.javaagent.AgentPreMain</Premain-Class><Main-Class>me.geek01.javaagent.Test01</Main-Class><Can-Redefine-Classes>true</Can-Redefine-Classes><Can-Retransform-Classes>true</Can-Retransform-Classes></manifestEntries></archive></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build>
一般属性
Manifest-Version
用来定义manifest文件的版本,例如:Manifest-Version: 1.0
Created-By
声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.1
Signature-Version
Class-Path
应用程序相关属性
Main-Class
定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。
