`
umi
  • 浏览: 30143 次
  • 性别: 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  
.......

相关推荐

    web-inf和meta-inf

    Web-Inf和Meta-Inf详解 Web-Inf和Meta-Inf是两种常见的配置文件,在Java Web应用程序中扮演着重要的角色。下面我们将详细介绍Web-Inf和...了解Web-Inf和Meta-Inf的作用、结构和应用是Java Web开发者不可或缺的技能。

    META-INF.rar_META-INF_fsfs

    在学习和研究过程中,理解和分析 `META-INF` 目录的内容可以帮助我们更好地了解软件的构建和运行机制,特别是在处理Java相关的项目时。对于开发者来说,正确管理和使用 `META-INF` 目录中的文件是保证软件正常运行和...

    META-INF .zip 代码

    4. **许可证和版权信息**:有时,开发者会在`META-INF`目录下放置许可证文件,比如`LICENSE`或`NOTICE`,以声明软件的使用条款和版权信息,确保用户了解并遵守相关法律法规。 5. **资源文件**:虽然不常见,但`META...

    META-INF.rar_analog tv_android

    标题"META-INF.rar_analog tv_android"提示我们这个压缩包可能包含了与Analog TV相关的Android应用或系统的资源和配置文件。"META-INF"是Java存档(JAR)文件或者安卓APK文件中常见的一个目录,它存储元数据,如数字...

    auto-service:自动生成META-INFservices文件

    在Java开发中,`auto-service` 是一个非常实用的库,它可以帮助开发者自动地生成`META-INF/services` 文件。这个文件通常用于实现Java SPI(Service Provider Interface)机制,这是一种允许程序在运行时发现并加载...

    143-商务安全邮箱邮件收发源码.zip

    \商务邮箱\mail\mail\target\mail-0.0.1-SNAPSHOT\META-INF\`:`META-INF` 目录通常包含应用元数据,如MANIFEST.MF文件,它记录了JAR包的相关信息。 3. `143-????????????\商务邮箱\mail\mail\target\mail-0.0.1-...

    sqljdbc4的源码包

    此外,如果SQLJDBC4驱动遵循Java的Service Provider Interface (SPI)机制,那么在META-INF下可能还会找到services子目录,其中的文件会列出该驱动作为JDBC驱动提供商的声明。 总的来说,通过分析sqljdbc4的源码,...

    如何加载jar包中的spring配置文件

    在jar包中的`META-INF/spring.factories`文件中声明配置类,Spring Boot启动时会自动加载。例如: ``` org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.MyConfig ``` **总结** 加载...

    多渠道批量打包方式之一(适用于需将渠道号写入meta中的)

    3. **设置渠道元数据**:在你的`AndroidManifest.xml`文件中,添加一个`&lt;meta-data&gt;`标签,指定渠道号的键值对。例如: ```xml &lt;meta-data android:name="渠道号" android:value="${channel}" /&gt; ``` 其中`${...

    java项目的目录作用

    本文将详细介绍 Java 项目的目录结构及其作用,包括 META-INF 目录、WEB-INF 目录等。 META-INF 目录 META-INF 目录是 Java 项目中最重要的目录之一,它用于存储包和扩展的配置数据,如安全性和版本信息。Java 2 ...

    flash-recovery-via-cwm-recovery(n900x).zip

    `META-INF/MANIFEST.MF`文件包含了关于包内所有文件的清单,而`META-INF/CERT.RSA`则存储了文件的数字签名,用于验证文件的完整性和来源。 6. **安全风险**:虽然Root和自定义恢复提供了许多灵活性,但它们也增加了...

    Java project code7

    在给定的“Java project code7”项目中,我们可以看到两个关键的目录:“META-INF”和“WEB-INF”。这两个目录在Java Web应用中尤其常见,它们各自承载着特定的功能和信息。 1. **META-INF目录**: - **MANIFEST....

    bea_tuxedo_quick_start

    教初学者如何快速入门的一本好书”强调了这本书的内容定位,即面向没有或仅有少量Tuxedo背景知识的学习者,通过清晰易懂的方式教授Tuxedo的基本概念、架构和使用方法,帮助他们在短时间内了解并开始使用这个复杂的...

    ZCKPC-CFROOT-20-02-2012.tar

    总的来说,“ZCKPC-CFROOT-20-02-2012.tar”可能是一个包含了特定项目或系统配置的归档文件,其中“META-INF”目录提供了关于软件元数据的信息,而“system”目录则可能存储了与该系统或项目运行环境密切相关的配置...

    eclipse的maven插件

    首先,我们来了解一下Maven。Maven是一个项目管理和综合工具,它帮助开发者管理项目的构建、报告和文档。通过使用一种声明式的方式来描述项目构建过程,Maven能够自动化构建流程,包括编译、测试、打包、部署等步骤...

    n880e-2.3.6-root

    这里,我们看到有三个关键文件或目录:boot.img、META-INF以及system,它们在root过程中起着重要作用。 1. **boot.img**: 这是安卓设备的引导镜像文件,包含了内核、恢复程序和其他启动所需的数据。在root过程中...

    gmail 2.1.8.07

    1. **desc.txt**:这个文件可能包含了关于该版本Gmail应用的详细描述、更新日志或者安装指南,用户可以通过阅读它来了解更新的具体内容和安装步骤。 2. **part0** 和 **part1**:这两个文件名可能是分块的安装文件...

    9100g 4.04root文件

    在卡刷过程中,META-INF通常包含用于引导恢复模式的脚本和签名信息,确保固件包的完整性和合法性。其中的`META-INF/com/google/android/update-script`文件可能包含了执行Root操作的脚本,而`META-INF/MANIFEST.MF`...

    APK反编译[归类].pdf

    而在 OPhone 平台上安装 APK 包时,应用管理器会按照同样的算法对包里的文件做校验,如果校验结果与 META-INF 下的内容不一致,系统就不会安装这个 APK。这就保证了 APK 包里的文件不能被随意替换。 5. classes.dex...

    I9300_CWM_刷机

    接下来,"META-INF"是ZIP格式刷机包中常见的一个目录,通常包含刷机过程中需要用到的元数据。这个目录下有若干重要文件,如`META-INF/com/android/installer/manifest.xml`,它是刷机脚本,指导系统如何处理ZIP包中...

Global site tag (gtag.js) - Google Analytics