MANIFEST.MF是Java打包文件(jar、war等)中的一个清单,用于描述包文件的元信息。主要作用包括指定打包文件中的主类,以及存储打包文件的元信息。
MANIFEST.MF文件通常由JVM或相关的工具读取和解析。例如,使用java -jar运行一个jar包时JVM会尝试读取jar包中的MANIFEST.MF文件来确定应用程序的主类并启动应用程序;而Gradle、Maven等构建工具和一些jar文件操作库,通常会使用java.util.jar.Manifest类来读取解析MANIFEST.MF文件,并将其转为Java对象以便使用。

MANIFEST.MF配置项
注意:每个配置项末尾必须要有一个空格或者换行。

1、Manifest-Version:描述MANIFEST.MF文件的版本号。如 Manifest-Version: 1.0
2、Main-Class:描述打包文件的主类,即包含静态main方法的类名,如果该类不在包文件根目录,则需要加上包名。如 Main-Class: com.example.TestClass
3、Class-Path:描述包文件的类路径,以便在运行时加载其他类,多个使用空格分隔。如 Class-Path: lib/my.jar lib/abc.jar
4、Created-By:用于描述生成包文件的工具和版本号。如 Created-By: Apache Maven 4.0.0
5、Specification-Title:描述包文件的规范标题。如 Specification-Title: My Application API
6、Specification-Version:描述包文件的规范版本。如 Specification-Version: 1.0.0
7、Specification-Vendor:描述包文件的规范厂商。如 Specification-Vendor: DresnClor Corporation
8、Sealed:描述包文件是否为封闭包,即是否允许其它包文件修改该包文件中的类。如 Sealed: true
9、Implementation-Title:描述包文件的实现标题。如 Implementation-Title: My Application
10、Implementation-Version:描述包文件的实现版本。如 Implementation-Version: 1.0.0-SNAPSHOT
11、Implementation-Vendor:描述包文件的实现厂商。如 Implementation-Vendor: DresnClor Corporation
12、Implementation-Vendor-Id:描述包文件的实现厂商ID。如 Implementation-Vendor-Id: com.dresnclor