3

当您使用 Google-Eclipse 插件创建一个新的Web 应用程序项目时,它会为您创建一个完整的项目目录结构,包括:

src/
    META-INF/
        jdoconfig.xml
        persistence.xml
war/
    WEB-INF/
        lib/
        web.xml
        ...etc.

首先,我的理解是这META-INF/仅适用于实用程序 JAR,不适用于 Web 应用程序 (WAR)。所以src/META-INF/*在项目中看到让我感到惊讶。但是后来我看到了像这样打包的 GAE Web 应用程序示例:

TheWebApp.war/
    WEB-INF/
        lib/
        classes/
            META-INF/
        web.xml
        ...
    blah.jsp
    ...etc/

WEB-INF/classes/META-INF/!最重要的是,我没有看到 GAE 项目和MANIFEST.MF目录的任何提及,我总是看到使用打包在META-INF. 现在我真的很困惑。

所以我认为我首先需要确认/澄清一般的作用META-INF和作用WEB-INF,然后了解它们如何在任何Web 应用程序的 WAR 中一起使用,然后了解 GAE 放置在其上的任何特质(如果存在) WAR 结构。

注意:我没有使用 Maven,并且不打算至少在接下来的 6 到 12 个月内使用(我现在没有时间学习它)。因此,如果这些问题的任何答案取决于您是否使用基于 Maven 的 buld,我更喜欢非 Maven 答案,因为我使用的是 Ant/Ivy。

所以我问:

  1. META-INF对于实用程序(库)JAR、可执行 JAR 和 WAR,目录的正常内容是什么?MANIFEST.MF对 WAR(GAE 和非 GAE 类似)是否有必要,为什么或为什么不?
  2. 我应该将非 Web 资源放在哪里,以便它们可用于运行时类路径?例如,说我有environment.propertiesmyapp-custom-resource-config.xml......我把这些放在哪里?在WEB-INF/, WEB-INF/classes, WEB-INF/classes/META-INF? 别的地方?
  3. GAE 项目WEB-INFMETA-INF目录的正确内容是什么,打包它们的正确方法是什么?

提前致谢。

4

1 回答 1

0

与 JAR 文件 META-INF 目录一样,根级 /META-INF 目录包含应用程序清单文件。它还可以包含特定 Web 容器或应用程序服务器的资源。例如,Apache Tomcat 在此目录中查找并使用 context.xml 文件来帮助自定义应用程序在 Tomcat 中的部署方式。

与 JAR 文件不同,根级 /META-INF 目录不在应用程序类路径中。您不能使用 ClassLoader 来获取此目录中的资源。但是,/WEB-INF/classes/META-INF 位于类路径中。您可以将所需的任何应用程序资源放在此目录中,并且可以通过 ClassLoader 访问它们。

于 2014-07-17T19:19:54.767 回答