zoukankan      html  css  js  c++  java
  • 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 $/);

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

      尊重原创,转载请注明来自: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

  • 相关阅读:
    SAP S/4HANA extensibility扩展原理介绍
    SAP CRM系统订单模型的设计与实现
    使用nodejs代码在SAP C4C里创建Individual customer
    SAP Cloud for Customer Account和individual customer的区别
    Let the Balloon Rise map一个数组
    How Many Tables 简单并查集
    Heap Operations 优先队列
    Arpa’s obvious problem and Mehrdad’s terrible solution 思维
    Passing the Message 单调栈两次
    The Suspects 并查集
  • 原文地址:https://www.cnblogs.com/fsjohnhuang/p/4046856.html
Copyright © 2011-2022 走看看