
- Maven 教程
- Maven - 首頁
- Maven - 概述
- Maven - 環境搭建
- Maven - POM
- Maven - 構建生命週期
- Maven - 構建配置檔案
- Maven - 倉庫
- Maven - 外掛
- Maven - 建立專案
- Maven - 構建和測試專案
- Maven - 外部依賴
- Maven - 專案文件
- Maven - 專案模板
- Maven - 快照
- Maven - 構建自動化
- Maven - 依賴管理
- Maven - 部署自動化
- Maven - Web 應用
- Maven - Eclipse IDE
- Maven - NetBeans
- Maven - IntelliJ IDEA
- Maven 有用資源
- Maven - 常見問題解答
- Maven - 快速指南
- Maven - 有用資源
- Maven - 討論
Maven - 概述
什麼是 Maven?
Maven 是一款專案管理和理解工具,它為開發人員提供了一個完整的構建生命週期框架。由於 Maven 使用標準目錄佈局和預設構建生命週期,開發團隊幾乎可以立即自動化專案的構建基礎設施。
在多個開發團隊的環境中,Maven 可以很快地建立起按照標準工作的方式。由於大多數專案設定都很簡單且可重用,因此 Maven 在建立報告、檢查、構建和測試自動化設定時,簡化了開發人員的工作。
Maven 為開發人員提供了管理以下方面的方法:
- 構建
- 文件
- 報告
- 依賴
- SCM(版本控制系統)
- 釋出
- 分發
- 郵件列表
總而言之,Maven 簡化和標準化了專案構建過程。它可以無縫地處理編譯、分發、文件、團隊協作和其他任務。Maven 提高了可重用性,並處理了大多數與構建相關的任務。
Maven 的發展
Maven 最初是為了簡化 Jakarta Turbine 專案中的構建過程而設計的。當時有多個專案,每個專案都包含略微不同的 ANT 構建檔案。JAR 檔案被簽入 CVS。
Apache 集團隨後開發了 **Maven**,它可以一起構建多個專案,釋出專案資訊,部署專案,在多個專案之間共享 JAR 檔案,並幫助團隊協作。
目標
Maven 的主要目標是為開發人員提供以下功能:
一個全面且可重用、易於維護和理解的專案模型。
與這個宣告式模型互動的外掛或工具。
Maven 專案的結構和內容在一個名為 pom.xml 的 XML 檔案中宣告,稱為專案物件模型 (POM),它是整個 Maven 系統的基本單元。在後面的章節中,我們將詳細解釋 POM。
約定優於配置
Maven 使用 **約定** 優於 **配置**,這意味著開發人員無需自己建立構建過程。
開發人員不必提及每一個配置細節。Maven 為專案提供了合理的預設行為。建立 Maven 專案時,Maven 會建立預設的專案結構。開發人員只需要相應地放置檔案,而無需在 pom.xml 中定義任何配置。
例如,下表顯示了專案原始碼檔案、資原始檔和其他配置的預設值。假設 **${basedir}** 表示專案位置:
專案 | 預設值 |
---|---|
原始碼 | ${basedir}/src/main/java |
資源 | ${basedir}/src/main/resources |
測試 | ${basedir}/src/test |
編譯後的位元組碼 | ${basedir}/target |
可分發 JAR | ${basedir}/target/classes |
為了構建專案,Maven 為開發人員提供了提及生命週期目標和專案依賴項的選項(依賴於 Maven 外掛功能及其預設約定)。大部分專案管理和構建相關任務都由 Maven 外掛維護。
開發人員可以構建任何給定的 Maven 專案,而無需瞭解各個外掛的工作原理。我們將在後面的章節中詳細討論 Maven 外掛。
Maven 的特性
遵循最佳實踐的簡單專案設定。
所有專案的一致使用。
依賴項管理,包括自動更新。
一個龐大且不斷增長的庫庫。
可擴充套件的,能夠輕鬆地用 Java 或指令碼語言編寫外掛。
無需或只需少量額外配置即可立即訪問新功能。
**基於模型的構建** - Maven 能夠將任意數量的專案構建成預定義的輸出型別,例如 jar、war、元資料。
**專案資訊的連貫站點** - 使用與構建過程相同的元資料,maven 能夠生成一個網站和一個 PDF,其中包含完整的文件。
**釋出管理和分發釋出** - 無需額外配置,maven 將與您的原始碼控制系統(如 CVS)整合,並管理專案的釋出。
**向後相容性** - 您可以輕鬆地將專案的多個模組從舊版本的 Maven 移植到 Maven 3。它也可以支援舊版本。
**自動父版本控制** - 無需在子模組中指定父模組進行維護。
**並行構建** - 它分析專案依賴關係圖,並允許您並行構建排程模組。使用此功能,您可以實現 20-50% 的效能提升。
**更好的錯誤和完整性報告** - Maven 改進了錯誤報告,併為您提供了指向 Maven wiki 頁面的連結,您可以在其中獲得錯誤的完整描述。