Skip to content

Maven自定义Mainfest

约 573 字大约 2 分钟

Maven

2025-03-26

简介

MANIFEST.MF 是一个在 Java 的 JAR 文件中常见的文件,位于 JAR 文件的 META-INF 目录下。它是一个纯文本文件,主要用于描述 JAR 文件的内容、元数据和配置信息。它是 JAR 文件的“清单文件”,类似于一种元数据文件,为运行时环境(如 JVM)或其他工具提供了必要的信息。

主要用途

  • 描述JAR文件的用途:例如,是否是一个可执行的 JAR 文件。
  • 指定主类:如果 JAR 文件是可执行的,MANIFEST.MF 中需要指定主类(即程序入口点)。
  • 定义依赖关系:列出 JAR 文件运行所需的其他库或模块。
  • 签名信息:存储数字签名信息以验证 JAR 文件的完整性和来源。
  • 扩展机制:支持 Java 的扩展机制,用于加载额外的功能模块

文件结构

例如:

Manifest-Version: 1.0
Created-By: Apache Ant 1.5.1
Extension-Name: Struts Framework
Specification-Title: Struts Framework
Specification-Vendor: Apache Software Foundation
Specification-Version: 1.1
Implementation-Title: Struts Framework
Implementation-Vendor: Apache Software Foundation
Implementation-Vendor-Id: org.apache
Implementation-Version: 1.1
Class-Path:  commons-beanutils.jar commons-collections.jar commons-dig
 ester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar s
 truts-legacy.jar
  1. Manifest-Version 用来定义manifest文件的版本,例如:Manifest-Version: 1.0
  2. Created-By 声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.1
  3. Signature-Version 定义jar文件的签名版本
  4. Class-Path 应用程序或者类装载器使用该值来构建内部的类搜索路径
  5. Main-Class 可执行 JAR 文件的主类(程序入口点)。JVM 使用此属性来启动应用程序。

自定义MANIFEST

有两种方式,第一种直接在resources里面新建META-INF/MANIFEST.MF文件,填写相关信息,第二种是在Maven里面配置相关信息

1. 创建MF文件

指定版本和启动路径

image-20250326085449499
image-20250326085449499
Manifest-Version: 1.0
Main-Class: icu.flycode.sdk.OpenAiCodeReview

2. pom.xml配置

里卖弄加入这个插件,需要指定mainfest的mainClass也就是主项目路径

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            <mainClass>icu.flycode.sdk.OpenAiCodeReview</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

参考文档

MANIFEST.MF文件详解

贡献者

  • flycodeuflycodeu

公告板

2025-03-04正式迁移知识库到此项目