使用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网络应用程序的例子包装如下:
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
的作用,然后了解它们如何在任何的WAR中一起使用 web应用程序,然后了解GAE在其WAR结构上放置的任何特性(如果存在)。
注意:我没有使用Maven,并且至少在接下来的6-12个月内没有打算(我现在没有时间学习它)。因此,如果这些问题的任何答案取决于您是否使用基于Maven的buld,我更喜欢非Maven的答案,因为我正在使用Ant / Ivy。
所以我问:
META-INF
目录的正常内容是什么,实用程序(库)JAR,可执行JAR和WAR?对于WAR(GAE和非GAE)是必需的MANIFEST.MF
,为什么或为什么不呢?environment.properties
或myapp-custom-resource-config.xml
...我在哪里放这些?在WEB-INF/
,WEB-INF/classes
,WEB-INF/classes/META-INF
?在其他地方?WEB-INF
和META-INF
目录的正确内容是什么,打包它们的正确方法是什么?提前致谢。
答案 0 :(得分:0)
与JAR文件META-INF目录一样,根级别/ META-INF目录包含应用程序清单文件。它还可以包含特定Web容器或应用程序服务器的资源。例如,Apache Tomcat在此目录中查找并使用context.xml文件来帮助自定义如何在Tomcat中部署应用程序。
与JAR文件不同,根级别/ META-INF目录不在应用程序类路径上。您不能使用ClassLoader获取此目录中的资源。然而,/ WEB-INF / classes / META-INF位于类路径上。您可以将所需的任何应用程序资源放在此目录中,并且可以通过ClassLoader访问它们。