在踏入 Maven 世界前,先建立共同語言。以下關鍵字將貫穿整個建置流程:
pom.xml 定義的專案物件模型(POM)為核心。專案可相依其他專案,也可由多個子模組組合而成。build.xml。com.mycompany),避免同名專案衝突。groupId:artifactId:version 唯一鎖定,必須存在於倉庫才能被解析。<dependencies> 區塊宣告。%USERPROFILE%\.m2\repository)與遠端倉庫(預設 Central:https://repo.maven.apache.org/maven2/)。-SNAPSHOT 者視為開發中版本,Maven 會自動從倉庫抓取最新快照,方便持續整合。Maven 將軟體開發通用步驟抽象為 Build Life Cycle,每個階段(Phase)對應一或多個 Goal。常見內建階段依序為:
validate:驗證專案結構正確性generate-sources / process-sources:產生/處理原始碼(如 APT、代碼生成器)generate-resources / process-resources:複製/過濾資源檔至輸出目錄compile:編譯主程式碼(mvn compile 或 mvn compiler:compile)test-compile / test:編譯並執行單元測試package:打包成 JAR/WAR/EARverify / install / deploy:整合測試、安裝至本地倉庫、佈署至遠端倉庫關鍵特性:執行某階段時,Maven 會自動依序執行所有前置階段。例如 mvn package 會從 validate 跑到 package,確保產出完整經過編譯、測試驗證。
| 指令 | 說明 |
|---|---|
mvn clean compile | 清理後重新編譯主程式 |
mvn test | 執行單元測試(含編譯測試碼) |
mvn package -DskipTests | 打包但跳過測試 |
mvn install | 安裝成品至本地倉庫,供其他專案相依 |
mvn deploy | 佈署至遠端倉庫(需 distributionManagement 設定) |
mvn dependency:tree | 顯示完整相依樹,排查版本衝突利器 |
<dependencyManagement> 外直接使用範圍版本,改用明確版本或 BOM(Bill of Materials)統一管理。<packaging>pom</packaging> 並列出 <modules>,子模組自動繼承父設定,mvn install 即可一次建置全專案。profiles 區分開發/測試/正式環境參數(資料庫連線、伺服器位址等),以 -Pprod 啟用。掌握上述核心概念與生命週期,即可駕馭 Maven 2 進行標準化、可重現的專案建置。後續可深入探討外掛開發、Archetype 專案模板、以及與 CI/CD 串接等進階主題。