项目文件夹结构设置 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

项目文件夹结构设置

要在部署到 Tomcat 服务器时正常工作,必须根据某些准则为编译的 Java Platform Enterprise Edition (Java EE) Web 应用程序存档(WAR 文件)设置正确的结构。项目目录不一定要遵循同样的标准,但为了简化编译和打包操作,最好采用同样的方式设置结构。如同 WAR 文件内容一样设置项目文件夹的结构,还有助您了解文件的关联方式以及它们在 Web 服务器上的行为方式。

在以下推荐使用的层次结构中,Web 应用程序的源代码置于 src 目录中,与生成脚本和它生成的 WAR 文件隔离。

~/workspace/my-app/ |-- build.sh - Build script that compiles classes and creates a WAR |-- README.MD - Readme file with information about your project, notes |-- ROOT.war - Source bundle artifact created by build.sh `-- src - Source code folder |-- WEB-INF - Folder for private supporting files | |-- classes - Compiled classes | |-- lib - JAR libraries | |-- tags - Tag files | |-- tlds - Tag Library Descriptor files | `-- web.xml - Deployment Descriptor |-- com - Uncompiled classes |-- css - Style sheets |-- images - Image files |-- js - JavaScript files `-- default.jsp - JSP (JavaServer Pages) webpage

src 文件夹内容与将进行打包并部署到服务器的内容匹配 (com 文件夹除外)。com 文件夹包含未编译的类 (.java 文件)。这些类需要编译并置于 WEB-INF/classes 目录中,以便可通过应用程序代码进行访问。

WEB-INF 目录包含未在 Web 服务器上公开提供的代码和配置。源目录根位置处的其他文件夹 (cssimagesjs) 在 Web 服务器上的对应路径中公开提供。

以下列示例与上面的项目目录相同,只是包含的文件和子目录更多。此示例项目包含简单的标签、模型和支持类以及一个用于 record 资源的 Java Server Page (JSP) 文件。它还包含一个用于引导的样式表和 JavaScript、一个默认 JSP 文件以及 404 错误对应的一个错误页面。

WEB-INF/lib 包含一个 Java 存档 (JAR) 文件,其中含有用于 PostgreSQL 的 Java 数据库连接 (JDBC) 驱动程序。WEB-INF/classes 为空,因为尚未编译类文件。

~/workspace/my-app/ |-- build.sh |-- README.MD |-- ROOT.war `-- src |-- WEB-INF | |-- classes | |-- lib | | `-- postgresql-9.4-1201.jdbc4.jar | |-- tags | | `-- header.tag | |-- tlds | | `-- records.tld | `-- web.xml |-- com | `-- myapp | |-- model | | `-- Record.java | `-- web | `-- ListRecords.java |-- css | |-- bootstrap.min.css | `-- myapp.css |-- images | `-- myapp.png |-- js | `-- bootstrap.min.js |-- 404.jsp |-- default.jsp `-- records.jsp

使用 Shell 脚本生成 WAR 文件

build.sh 是非常简单的 shell 脚本,它用于编译 Java 类、构造 WAR 文件并将该文件复制到 Tomcat webapps 目录以进行本地测试。

cd src javac -d WEB-INF/classes com/myapp/model/Record.java javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/model/Record.java javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/web/ListRecords.java jar -cvf ROOT.war *.jsp images css js WEB-INF cp ROOT.war /Library/Tomcat/webapps mv ROOT.war ../

在 WAR 文件中,将发现与上面示例中的 src 目录相同的结构 (不包括 src/com 文件夹)。jar 命令自动创建 META-INF/MANIFEST.MF 文件。

~/workspace/my-app/ROOT.war |-- META-INF | `-- MANIFEST.MF |-- WEB-INF | |-- classes | | `-- com | | `-- myapp | | |-- model | | | `-- Records.class | | `-- web | | `-- ListRecords.class | |-- lib | | `-- postgresql-9.4-1201.jdbc4.jar | |-- tags | | `-- header.tag | |-- tlds | | `-- records.tld | `-- web.xml |-- css | |-- bootstrap.min.css | `-- myapp.css |-- images | `-- myapp.png |-- js | `-- bootstrap.min.js |-- 404.jsp |-- default.jsp `-- records.jsp

使用 .gitignore

要避免将已编译的类文件和 WAR 文件提交到 Git 存储库,或避免在运行 Git 命令时显示有关这些文件的消息,请将相关文件类型添加到项目文件夹内一个名为 .gitignore 的文件中。

~/workspace/myapp/.gitignore

*.zip *.class