`
umi
  • 浏览: 29761 次
  • 性别: Icon_minigender_1
  • 来自: 被最幸福之城
文章分类
社区版块
存档分类

你真的了解META-INF吗?

阅读更多

 

你真的了解META-INF吗?

做过JAVA EE开发的工程师应该都知道在JAVA build出来的JAR或者WAR的顶层目录下有个META-INF文件夹吧,可是有多少人能够清楚说出这个文件夹到底是做神马的? What is the purpose of META-INF? 恐怕不是都能说的清楚准确吧。

把这个问题抛出来,是因为我在公司的项目中发现META-INF这个文件夹被误用了,看来不是每个人都清楚:)

所谓META-INF, 说白了就是存放一些meta information相关的文件的这么一个文件夹, 一般来说尽量不要自己手工放置文件到这个文件夹。怎么理解这句话呢?就是说这个文件夹应该被看作是JAVA工程的一个内部META目录,所以这个目录下的文件应该都是build工具来生成的。我们自己的文件应该直接放到根目录下或者其他的子目录中。

根据官方的JAR file specification(http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html), 一个典型的META-INF目录下可能包含如下几种文件或者子目录:
  • MANIFEST.MF
  • INDEX.LIST
  • x.SF
  • x.DSA
  • services/

不过理想和现实总是有差距,现在即使一些著名的开源代码对META-INF的使用上都存在大的差异,类似Apache CXF中就有这样的Spring配置:
<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:jaxws="http://cxf.apache.org/jaxws"
     xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">

     <import resource="classpath:META-INF/cxf/cxf.xml" />
     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
  ...
</beans>
更多讨论见stackoverflow的一个Q&A:
http://stackoverflow.com/questions/70216/whats-the-purpose-of-meta-inf
分享到:
评论
2 楼 flytrap 2017-11-29  
    
1 楼 你的味道记于心 2017-02-21  
.......

相关推荐

    SpringMVC框架入门配置 IDEA下搭建Maven项目

    关于SpringMVC的介绍我就不在此赘述了,想必每一个配置Spring的人都已经或多或少了解过一些SpringMVC的基础知识,可能有的人用的myeclipse或者eclipse进行项目的搭建,我会告诉你这里步骤是很相似的,在myeclipse...

    APK文件简易汉化教程

    同时,在进入压缩包里的【META-INF】目录(这是储存签名文件目录),删除里面除了MANIFEST.MF外的其他文件。 5.最后,就可以签名了,签名需要Auto-sign签名工具。使用Auto-sign签名工具需要安装JAVA才行。签名完后的...

    Android TV ROM体积精简

    在目前的机顶盒ROM中,系统可以精简的地方有很多,本篇文章基于Android4.4.2系统,简单介绍下一些常见的系统精简方式。 一、update.zip结构简介   要进行系统体积精简,首先就要了解update.zip的目录...|----META-INF

    quarkus-booking-demo:由code.quarkus.io生成

    quarkus-booking-demo项目 该项目使用Quarkus(超音速亚原子Java框架)。 如果您想了解更多有关Quarkus的信息,请访问其网站...cp -R dist / * ../src/main/resources/META-INF/resources/ 在开发人员模式下运行应用程

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    java动态日志注入工具anylog.zip

    anylog 是一个可以在代码的任意区域无入侵地加入日志的工具,适用于线上问题排查。 anylog 为开发人员提供一个易于使用的平台,帮助开发... 如果要深入了解spi机制,请自行google:java spi 标签:anylog

    ZWaveManagement:简单的 Z-Wave 管理 OSGi 包

    简单的 Z-Wave 管理 OSGi 包 作者:伍德罗·巴洛 最后修改时间:2015 年 6 月 15 日星期一 15:41:25 EDT 一些历史 ...MANIFEST.MF :每个 OSGi 包都必须有一个 MANIFEST.MF 文件(它在 META-INF 文件夹

    手把手教你逆向分析Android程序

    ok,那我们从头说起Android的反编译,相信大家都应该有所了解,apktool、JEB等工具我们先看一下Apk文件的结构吧,如下图:1.META-INF:签名文件(这个是如何生成的后面会提到)2.res:资源文件,里面的xml格式文件在...

    cms后台管理

    1.在myeclipse中新建一个项目jeecms,将服务器中jeecms项目下web-inf文件夹下内容拷到新建项目中 解压缩jeecms-3.0.2-final-src,在src文件夹下会看到有三个压缩文件,如果只想进行普通的二次开发,可以只导入cms这...

    ant1.9资源

    为了更清楚的了解Ant,在这里编写一个简单的Ant程序,用来展现Ant的功能,让读者对Ant有一个初步的了解。首先在E盘下建立一个build.xml文件,内容如下: &lt;?xml version="1.0"?&gt; ,Amigo"/&gt; 读者可以进入E盘...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.5.2. 了解自己 3.5.2.1. BeanFactoryAware 3.5.2.2. BeanNameAware 3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.1.1. 使用BeanPostProcessor的Hello World示例 3.7.1.2. ...

    spring chm文档

    17.3.2. 使用HessianServiceExporter暴露你的bean 17.3.3. 客户端连接服务 17.3.4. 使用Burlap 17.3.5. 对通过Hessian或Burlap暴露的服务使用HTTP基础认证 17.4. 使用HTTP调用器暴露服务 17.4.1. 暴露服务对象 ...

    Spring 2.0 开发参考手册

    17.3.2. 使用HessianServiceExporter暴露你的bean 17.3.3. 客户端连接服务 17.3.4. 使用Burlap 17.3.5. 对通过Hessian或Burlap暴露的服务使用HTTP基础认证 17.4. 使用HTTP调用器暴露服务 17.4.1. 暴露服务对象 ...

    Spring中文帮助文档

    3.5.2. 了解自己 3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.3. 使用FactoryBean定制实例化逻辑 3.8. The ...

    Spring API

    3.5.2. 了解自己 3.6. bean定义的继承 3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.3. 使用FactoryBean定制实例化逻辑 3.8. The ...

Global site tag (gtag.js) - Google Analytics