你真的了解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
分享到:
相关推荐
Web-Inf和Meta-Inf详解 Web-Inf和Meta-Inf是两种常见的配置文件,在Java Web应用程序中扮演着重要的角色。下面我们将详细介绍Web-Inf和...了解Web-Inf和Meta-Inf的作用、结构和应用是Java Web开发者不可或缺的技能。
在学习和研究过程中,理解和分析 `META-INF` 目录的内容可以帮助我们更好地了解软件的构建和运行机制,特别是在处理Java相关的项目时。对于开发者来说,正确管理和使用 `META-INF` 目录中的文件是保证软件正常运行和...
4. **许可证和版权信息**:有时,开发者会在`META-INF`目录下放置许可证文件,比如`LICENSE`或`NOTICE`,以声明软件的使用条款和版权信息,确保用户了解并遵守相关法律法规。 5. **资源文件**:虽然不常见,但`META...
标题"META-INF.rar_analog tv_android"提示我们这个压缩包可能包含了与Analog TV相关的Android应用或系统的资源和配置文件。"META-INF"是Java存档(JAR)文件或者安卓APK文件中常见的一个目录,它存储元数据,如数字...
在Java开发中,`auto-service` 是一个非常实用的库,它可以帮助开发者自动地生成`META-INF/services` 文件。这个文件通常用于实现Java SPI(Service Provider Interface)机制,这是一种允许程序在运行时发现并加载...
\商务邮箱\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驱动遵循Java的Service Provider Interface (SPI)机制,那么在META-INF下可能还会找到services子目录,其中的文件会列出该驱动作为JDBC驱动提供商的声明。 总的来说,通过分析sqljdbc4的源码,...
在jar包中的`META-INF/spring.factories`文件中声明配置类,Spring Boot启动时会自动加载。例如: ``` org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.MyConfig ``` **总结** 加载...
3. **设置渠道元数据**:在你的`AndroidManifest.xml`文件中,添加一个`<meta-data>`标签,指定渠道号的键值对。例如: ```xml <meta-data android:name="渠道号" android:value="${channel}" /> ``` 其中`${...
本文将详细介绍 Java 项目的目录结构及其作用,包括 META-INF 目录、WEB-INF 目录等。 META-INF 目录 META-INF 目录是 Java 项目中最重要的目录之一,它用于存储包和扩展的配置数据,如安全性和版本信息。Java 2 ...
`META-INF/MANIFEST.MF`文件包含了关于包内所有文件的清单,而`META-INF/CERT.RSA`则存储了文件的数字签名,用于验证文件的完整性和来源。 6. **安全风险**:虽然Root和自定义恢复提供了许多灵活性,但它们也增加了...
在给定的“Java project code7”项目中,我们可以看到两个关键的目录:“META-INF”和“WEB-INF”。这两个目录在Java Web应用中尤其常见,它们各自承载着特定的功能和信息。 1. **META-INF目录**: - **MANIFEST....
教初学者如何快速入门的一本好书”强调了这本书的内容定位,即面向没有或仅有少量Tuxedo背景知识的学习者,通过清晰易懂的方式教授Tuxedo的基本概念、架构和使用方法,帮助他们在短时间内了解并开始使用这个复杂的...
总的来说,“ZCKPC-CFROOT-20-02-2012.tar”可能是一个包含了特定项目或系统配置的归档文件,其中“META-INF”目录提供了关于软件元数据的信息,而“system”目录则可能存储了与该系统或项目运行环境密切相关的配置...
首先,我们来了解一下Maven。Maven是一个项目管理和综合工具,它帮助开发者管理项目的构建、报告和文档。通过使用一种声明式的方式来描述项目构建过程,Maven能够自动化构建流程,包括编译、测试、打包、部署等步骤...
这里,我们看到有三个关键文件或目录:boot.img、META-INF以及system,它们在root过程中起着重要作用。 1. **boot.img**: 这是安卓设备的引导镜像文件,包含了内核、恢复程序和其他启动所需的数据。在root过程中...
1. **desc.txt**:这个文件可能包含了关于该版本Gmail应用的详细描述、更新日志或者安装指南,用户可以通过阅读它来了解更新的具体内容和安装步骤。 2. **part0** 和 **part1**:这两个文件名可能是分块的安装文件...
在卡刷过程中,META-INF通常包含用于引导恢复模式的脚本和签名信息,确保固件包的完整性和合法性。其中的`META-INF/com/google/android/update-script`文件可能包含了执行Root操作的脚本,而`META-INF/MANIFEST.MF`...
而在 OPhone 平台上安装 APK 包时,应用管理器会按照同样的算法对包里的文件做校验,如果校验结果与 META-INF 下的内容不一致,系统就不会安装这个 APK。这就保证了 APK 包里的文件不能被随意替换。 5. classes.dex...
接下来,"META-INF"是ZIP格式刷机包中常见的一个目录,通常包含刷机过程中需要用到的元数据。这个目录下有若干重要文件,如`META-INF/com/android/installer/manifest.xml`,它是刷机脚本,指导系统如何处理ZIP包中...