本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建構您的專案資料夾
若要在部署到 Tomcat 伺服器時能夠運作,編譯的 Java Platform Enterprise Edition (Java EE) web 應用程式封存檔 (WAR 檔案) 必須根據特定準則
在下列建議的階層中,會將 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 伺服器上公開提供的程式碼與組態。位於來源目錄根的其他資料夾 (css
、images
與 js
),則會於 web 伺服器上的對應路徑公開提供。
下列的範例與先前的專案目錄相同,但包含了更多的檔案和子目錄。此範例專案包含簡單的標籤、模型和支援類別,以及 record
資源的 Java Server Pages (JSP) 檔案。此範例還包含 Bootstrap
WEB-INF/lib
包含了 Java Archive (JAR) 檔案,內有適用於 PostgreSQL 的 Java Database Connectivity (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