Java JAR清单文件是否有约定的属性集合及规范?
JAR清单文件的命名与约定规范
一、官方标准清单项
Java官方在JAR规范里明确定义了一批标准清单项,这些有固定命名,手写时建议优先放在清单靠前位置:
Implementation-Title:JAR包的实现名称Implementation-Version:JAR包的实现版本Implementation-Vendor:实现提供商Specification-Title:关联的规范名称Specification-Version:规范版本Specification-Vendor:规范提供商
这些项的命名是统一的官方约定,所有主流构建工具都会遵循,建议按上面的顺序排列,方便其他人阅读。
二、常用扩展项的约定写法
对于官方没定义但常用的扩展项,行业里已经形成了基于主流构建工具的约定:
构建日期/时间戳
更常用的写法是**Build-Timestamp**,比如Maven的maven-jar-plugin默认生成的就是这个键,格式一般用ISO 8601标准(比如2024-05-20T14:30:00Z);Build-Date属于早期的非标准化写法,现在基本被Build-Timestamp取代,因为后者明确包含时间信息,精度更高。
其他常见扩展项
Built-By:执行构建的用户名Created-By:构建工具的信息(比如Apache Maven 3.9.6)Main-Class:可执行JAR的主类全路径Class-Path:依赖JAR的类路径
三、排序与编写原则
- 先放官方标准项,再放自定义扩展项
- 同类项集中放置(比如所有
Implementation-*项放在一起,所有Build-*项放在一起) - 键名统一用驼峰+连字符的格式,别用下划线或全小写,这是所有主流工具都遵循的风格
四、参考Maven等构建工具的约定
像Maven、Gradle这类工具,对清单项的生成有明确的默认规则,手写时直接参考就行:
- Maven的
maven-jar-plugin默认生成的清单顺序:Created-By→Build-Jdk→Built-By→Build-Timestamp→ 各类Implementation-*/Specification-*项 - 手动编写时照搬这个顺序和命名,能保证和自动化构建的JAR清单风格一致,后续维护起来更方便
内容的提问来源于stack exchange,提问作者opticyclic
相关产品推荐
相关产品推荐

