介绍
打开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文件。