從傳統 Web 專案遷移至 Maven 結構時,開發者常對目錄佈局、部署機制、環境變數配置等產生疑惑。本文系統整理 Maven Web 專案標準結構,並針對 Windows 環境變數、命令行編譯執行、Eclipse 依賴管理、Tomcat 部署 Jar 包丟失等高頻問題給出深度解析與最佳實踐。
當在 CMD 中輸入 `java`、`javac` 等命令時,作業系統會依序在當前目錄及 Path 指定的目錄下尋找對應的可執行檔(`.exe`)。配置 `%JAVA_HOME%\bin` 到 Path,即可在任意目錄直接執行 JDK 工具命令。
核心作用:簡化命令輸入,讓系統知道去哪裡找可執行程式。
Java 編譯器(`javac`)與運行時(`java`)需要知道去哪裡載入 `.class` 檔案或第三方庫。ClassPath 指定了用戶類與系統類的搜尋路徑(目錄、JAR、ZIP)。
核心區別:Path 給 OS 用(找 exe);ClassPath 給 JVM 用(找 class/jar)。
// Test.java
package com.cnblog;
import undact.utils.GetTime;
public class Test {
public static void main(String[] args) {
System.out.println(GetTime.GetNowTime());
}
}
| 資源類型 | Maven 結構 (src/main/...) | 傳統結構 (WebContent/...) | 部署後統一位置 (WEB-INF/...) |
|---|---|---|---|
| Java 原始碼 | src/main/java | src | classes |
| 資源檔 | src/main/resources | src | classes |
| Web 資源 | src/main/webapp | WebContent | 應用根目錄 |
| 測試程式碼 | src/test/java | — | 不部署 |
| 依賴 JAR | Maven Dependencies | 手動加入 lib | lib |
關鍵在於 **Eclipse 部署組裝配置**(Deployment Assembly)。
Eclipse 根據這份映射關係,在發布時將專案資源「組裝」成標準 Servlet 容器識別的 Web 應用結構。理解此機制,即可輕鬆在兩種結構間轉換經驗。
| 方式 | 操作入口 | 適用場景 | 優缺點 |
|---|---|---|---|
| Add JARs | 選擇**當前專案內**的 JAR | 專案內建 `lib` 目錄管理依賴 | ✅ JAR 隨專案遷移,不易遺失;✅ 團隊協作、版本控制友好 |
| Add External JARs | 選擇**任意路徑**的 JAR | 引用系統級/共享庫 | ⚠️ 絕對路徑依賴,機器遷移易失效;⚠️ 檔案被誤刪導致專案報錯 |
最佳實踐:專案根目錄建立 `lib` 資料夾,放入所有第三方 JAR,使用 Add JARs 引入。Maven 專案則直接透過 `pom.xml` 管理依賴,無需手動操作。