Java魔法堂:打包知识点之META-INF/MAINFEST.MF

简介:

一、前言                                     

   通过执行形如 jar -cvf src.jar src 命令将多个.class文件打包成JAR包时,你会发现JAR包中除了src目录外还多了个MATE-INF/MAINFEST.MF,那是为什么呢?

   其实关于JAR包的描述信息、启动时的配置信息和安全性信息等均保存在META-INF下,因此了解META-INF目录对发布、部署十分重要的哦!下面仅为部分内容的整理,待日后深入实践后再补充完整。官方文档为:http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html

 

二、META-INF/MAINFEST.MF清单文件组成元素                

  META-INF/MAINFEST.MF清单文件由1个 main-section 和0到N个 individual-section 组成,而每个section中含有多个attribute组成,其中 main-section 中的attribute命名为 main-attribute ,而 individual-section 中的attribute命名为 perentry-attribute 。

  各个attribute间使用<CR><LF>作为分隔符(Unix下则使用<LF>作为分隔符,Mac下则使用<CR>作为分隔符)。

  individual-section 以名为 Name 的 perentry-attribute 来标识该区域,且作为该区域的起始行。

  示例:

Manifest-Version: 1.0
Created-By: 1.2 (Sun Microsystems Inc.)
Sealed: true
Name: foo/bar/
Sealed: false

  main-section 用于描述JAR包的安全、配置信息,和对JAR包内所有包和文件的默认信息。

  每个 individual-section 用于描述JAR包中单个包或文件,但不是JAR包中的每个包和文件都必须配置 individual-section ,但对于需要被签名的文件就必须配置对应的 individual-section 了。

 

三、 main-attribute 详解                            

   1. 常规属性

Mainfest-Version: JAR版本号
Created-By: 生产者
Signature-Version: 签名版本
Class-Path: 依赖项列表,若存在多个依赖项时则采用空格分隔。依赖项路径为以JAR包路径为参考系的相对路径

   2. 可执行的JAR包属性

Main-Class: main函数所在的全限定类名

 

四、 perentry-attribute 详解                        

  1. Name属性, individual-section 的起始属性,包命名规范形如:com/test/myapp/,文件命名规范形如:com/test/myapp/MyApp.class。

  2. 定义文件内容

Content-Type: MIME类型(格式为:type/subtype。例如,image/jpeg)

 

五、注意事项                               

  1. 键值对独立占据一行或多行;

  2. 每行最大长度为72个字符;

  3. 每行的最后一个字符必须以回车符换行符结尾,而且回车符换行符不能有空格(使用正则表达式表达每行规范就是/^.+\S\r\n$/);

  4. 若键值对独立占据多行,那么从第二行起,必须以一个或以上的空格开头(使用正则表达式表达第二行及其余行的规范就是/^[ ]{1,}.+\S\r\n$/)。

  尊重原创,转载请注明来自:http://www.cnblogs.com/fsjohnhuang/p/4046856.html  ^_^肥仔John

 

参考                                  

http://blog.csdn.net/zhifeiyu2008/article/details/8829637

http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html

 

如果您觉得本文的内容有趣就扫一下吧!捐赠互勉!


本文转自^_^肥仔John博客园博客,原文链接:http://www.cnblogs.com/fsjohnhuang/p/4046856.html,如需转载请自行联系原作者

相关文章
|
8天前
|
JavaScript Java 编译器
Java包装类和泛型的知识点详解
Java包装类和泛型的知识点的深度理解
|
1月前
|
Java 程序员 编译器
Java继承与多态知识点详解
本文主要讲解的是Java中继承与多态的知识点
|
1月前
|
Java 应用服务中间件 开发工具
苍穹外卖》电商实战项目(java)知识点整理(上)
苍穹外卖》电商实战项目(java)知识点整理(上)
174 3
|
1天前
|
设计模式 SQL Java
java基础知识点(初级二)
java基础知识点(初级二)
|
1天前
|
存储 Java 容器
java基础知识点(初级)
java基础知识点(初级)
|
13天前
|
Java
java线程知识点总结
Java线程核心概念:线程是程序执行流,一个进程可有多个线程。创建线程通过继承Thread或实现Runnable接口。线程状态包括新建、就绪、运行、阻塞、等待、超时等待和终止。同步用synchronized或Lock防止数据不一致,避免死锁。线程间通过共享变量、wait/notify通信。线程池(如ThreadPoolExecutor、ScheduledThreadPoolExecutor)优化性能和资源管理。
16 6
|
13天前
|
安全 前端开发 Java
Java Web开发知识点学习总结
Java Web开发涉及Java基础、Servlet、JSP、数据库操作(SQL+JDBC)、MVC设计模式、Spring框架、Hibernate ORM、Web服务(SOAP&RESTful)、安全认证(HTTP Basic/Digest/OAuth)及性能优化(缓存、异步、负载均衡)。
15 3
|
17天前
|
设计模式 安全 Java
Java基础知识点总结1
Java基础知识点总结
23 0
|
30天前
|
Java 索引
java知识点总结(二)
java知识点总结(二)
13 0
|
30天前
|
存储 Java 数据库
java基础的知识点(一)
java基础的知识点(一)
12 0