• MANIFEST.INF!JAR规范中


    MANIFEST.INF!JAR规范中 META-INF 目录中内容心得。顺带整理了网上资料,提供地址

    标签: jarjava产品sunantapache
     分类:
     

    Java 产品打包成 JAR 文件,其中会在 META-INF 目录下边存在声明文件 MANIFEST.MF 。此文件内容为

    KEY: VALUE ,这样的一行行内容。以下整理总结了各种标准规范中指定的 KEY 含义。


    Manifest-Version
        必有,但应该不用指定
    Ant-Version
        如果使用 Ant 的话,会由 Ant 自己加进来
    Created-By: 1.6.0-b105 (Sun Microsystems Inc.)
        如果使用 Ant 的话,会自动增加一个 Sun 的版本
    Built-By
        编译的人名,最好能是英文吧……
    Extension-Name
        Jar文件的标识。如果 Java 程序包符合规范的话,包(package)名应该符合这样的规则。
        域名反序.项目名甲.模块名甲.xxx
        比如一个完整类全名:cn.spads.soccerms.data.dao.RamMatchDao
        如果是一个模块封装成 .jar 的话,会存在其它任何 .jar 包都绝不可能出现这样的包:
        cn.spads.soccerms.data.*
        于是,可以认为 cn.spads.soccerms.data 是当下这个 .jar 包所独有的 Java 类包名前缀。
        于是用词作为 .jar 文件的唯一标识,非常合适。
    Name
        签名用的“姓名”,推荐将产品名称放在这里,或者是产品模块的名称。
    Comment
        注释,对产品的说明
    Specification 和 Implementation
        Specification 是标准。比如 Servlet 标准,可能还有 JDBC 标准。
        Implementation 是针对这个标准的产品。
        如果没有特别的名字,其中 -Title 可以用和 Name 一致的内容,比如 Spads Soccer Management
        具体来说,有通用的 TitleVersion 和 Vendor ;
        还有 Implementation-Vendor-Id 和 Implementation-URL
    Sealed

        只有 true 和 false 二种值。
        其中 true 意味着此 .jar 包拒绝别的 .jar 包里边的程序直接加载当前 .jar 包里边的类。
        对于组件型 .jar 包,应该是 false ;对于封装的 Java 应用,可以考虑用 true 。
    Class-Path
        每个类路径用空格分隔,同时换行的话要以空格作为行首第一个字符。
        此类路径的基准是当前 .jar 文件所在目录。类路径应该是以此为基准的相对路径。
        比如存在文件结构:
        SoccerMS [目录]
            soccer-ms-1.1.0.jar
            lib [目录]
                mysql-connector-java-5.1.18-bin.jar
                postgresql-9.1-901.jdbc4.jar
        那么 soccer-ms-1.1.0.jar 中 MANIFEST.MF 
    Main-Class
        一定要写类全名。此类中应包含 static public void main(String[] xxx) 方法,即主方法。
        然后可以通过命令行的 java -jar xxxx.jar 来运行 .jar 文件。


    实际操作中,一个 .jar 包很可能实现了很多规范。于是 MANIFEST.MF 会有如下集中的段落:
    [html] view plain copy
     
     print?
    1. ############ 第 1 份规范 ###########  
    2. Specification-Title: Java API for XML Processing  
    3. Specification-Vendor: Sun Microsystems Inc.  
    4. Specification-Version: 1.3  
    5.   
    6. Name: org/apache/xalan/  
    7. Comment: Main Xalan engine implementing TrAX/JAXP  
    8. Implementation-Title: org.apache.xalan  
    9. Implementation-Version: @impl.version@  
    10. Implementation-Vendor: Apache Software Foundation  
    11. Implementation-URL: http://xml.apache.org/xalan-j/  
    12.   
    13. Name: org/apache/xpath/  
    14. Comment: XPath engine  
    15. Implementation-Title: org.apache.xpath  
    16. Implementation-Version: @impl.version@  
    17. Implementation-Vendor: Apache Software Foundation  
    18. Implementation-URL: http://xml.apache.org/xalan-j/  
    19.   
    20. ############ 第 2 份规范 ###########  
    21. Specification-Title: Runtime component of JCup  
    22. Specification-Vendor: Princeton University  
    23. Specification-Version: 0.10k  
    24.   
    25. Name: java_cup/runtime/  
    26. Comment: Runtime component of JCup  
    27. Implementation-Title: runtime  
    28. Implementation-Version: @impl.version@  
    29. Implementation-Vendor: Princeton University  
    30. Implementation-URL: http://www.cs.princeton.edu/~appel/modern/java/CUP/   



    对于多段规范被实现,每个规范被多个部分联合实现,可以参看下边的例子,是一个很完整的例子。
    http://www.oschina.net/code/explore/xalan/xalan-j_2_7_1/src/MANIFEST.MF


    另外可以去看看以下这篇帖子,其中讲到了手动编写 MANIFEST.MF 文件的一些心得。
    http://hi.baidu.com/lkdlhw_2000/blog/item/195519663df40920aa184ceb.html

    这篇帖子在网上广泛流传,为防止地址打不开,给几个格式比较好的转载:
    http://happysky.iteye.com/blog/391610
    http://blog.163.com/shucker_gzb/blog/static/64514485200951815712456/
  • 相关阅读:
    索引压缩
    拼写校正
    词典(词汇表)
    Text Relatives II
    Text Relatives
    CoreText
    Quartz2D Text
    PDF Document Creation, Viewing
    Core Graphics Layer Drawing
    Bitmap Images and Image Masks
  • 原文地址:https://www.cnblogs.com/developer-ios/p/6047269.html
Copyright © 2020-2023  润新知