在Java中,您经常会看到包含一些元文件的meta - inf文件夹。这个文件夹的目的是什么?我可以在那里放什么?


当前回答

我最近一直在思考这个问题。对于META-INF的使用似乎真的没有任何限制。当然,有一些限制,关于把舱单放在那里的必要性,但似乎没有任何禁止把其他东西放在那里。

为什么会这样呢?

cxf案例可能是合法的。这里是建议使用非标准的另一个地方,它可以绕过JBoss-ws中防止针对wsdl模式进行服务器端验证的严重错误。

http://community.jboss.org/message/570377#570377

但似乎真的没有什么标准,没有什么千言万语。通常这些事情都有非常严格的定义,但出于某种原因,这里似乎没有标准。奇数。META-INF似乎已经成为了一个无所不包的地方,任何所需的配置都无法通过其他方式轻松处理。

其他回答

所有答案都是正确的。Meta-inf有很多用途。此外,这里还有一个关于使用tomcat容器的示例。

去 Tomcat Doc并检查 “标准实现> copyXML”属性。

描述如下。

Set to true if you want a context XML descriptor embedded inside the application (located at /META-INF/context.xml) to be copied to the owning Host's xmlBase when the application is deployed. On subsequent starts, the copied context XML descriptor will be used in preference to any context XML descriptor embedded inside the application even if the descriptor embedded inside the application is more recent. The flag's value defaults to false. Note if the deployXML attribute of the owning Host is false or if the copyXML attribute of the owning Host is true, this attribute will have no effect.

Maven中的META-INF

在Maven中,META-INF文件夹被理解是因为标准目录布局,根据名称约定将您的项目资源打包到JAR中:放置在${basedir}/src/main/resources目录中的任何目录或文件都以完全相同的结构打包到JAR中,从JAR的底部开始。

文件夹${basedir}/src/main/resources/META-INF通常包含。properties文件,而在jar中包含一个生成的MANIFEST。MF,砰的一声。属性,pom.xml,以及其他文件。同样,像Spring这样的框架使用classpath:/META-INF/resources/来提供web资源。

有关更多信息,请参阅如何向Maven项目添加资源。

META-INF文件夹是清单的主页。MF文件。该文件包含关于JAR内容的元数据。例如,有一个名为main - class的条目,它为可执行JAR文件指定了带有静态main()的Java类的名称。

我最近一直在思考这个问题。对于META-INF的使用似乎真的没有任何限制。当然,有一些限制,关于把舱单放在那里的必要性,但似乎没有任何禁止把其他东西放在那里。

为什么会这样呢?

cxf案例可能是合法的。这里是建议使用非标准的另一个地方,它可以绕过JBoss-ws中防止针对wsdl模式进行服务器端验证的严重错误。

http://community.jboss.org/message/570377#570377

但似乎真的没有什么标准,没有什么千言万语。通常这些事情都有非常严格的定义,但出于某种原因,这里似乎没有标准。奇数。META-INF似乎已经成为了一个无所不包的地方,任何所需的配置都无法通过其他方式轻松处理。

如果您使用的是JPA1,则可能必须在其中放入一个persistence.xml文件,该文件指定您可能想要使用的持久化单元的名称。持久化单元提供了一种方便的方式,可以指定一组元数据文件、类和包含分组中要持久化的所有类的jar。

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

// ...

EntityManagerFactory emf =
      Persistence.createEntityManagerFactory(persistenceUnitName);

点击这里查看更多信息: http://www.datanucleus.org/products/datanucleus/jpa/emf.html