Maven是開源、跨平臺(Windows\Linux\Mac)主要服務於基於Java平臺的自動化項目構建、依賴管理、報告和文檔的軟件項目管理工具。
項目構建(Build)包括:項目的清理、編譯、測試、生成文檔、打包和部署的過程。Maven最大化地消除了構建的重複,抽象了構建生命週期,並且爲絕大部分的構建任務提供了已實現的插件。
依賴管理(Dependency Management):Maven通過座標有序系統管理第三方構件(artifact)、類庫(Jar文件)。Maven爲全世界的Java開發者提供了一個免費的中央倉庫,在其中幾乎可以找到任何的流行的開源類庫。只要定位了座標,Maven就能夠幫我們自動下載。
Maven包含了一個項目對象模型(POM,Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件目標的邏輯。
Maven能夠很方便的幫你管理項目報告(項目描述、開發者列表、版本控制系統地址、許可證、缺陷管理系統地址等),測試報告,靜態分析報告,源碼版本日誌報告,生成站點,管理JAR文件。
無論是小型的開源類庫項目,還是大型的企業級應用;無論是傳統的瀑布式開發,還是流行的敏捷模式,maven都能大顯身手。
|
Maven |
Ant |
標準構建文件 |
project.xml 和 maven.xml |
build.xml |
特性處理順序 |
1.${maven.home}/bin/driver.properties 2.${project.home}/project.properties 3.${project.home}/build.properties 4.${user.home}/build.properties 5.通過 -D命令行選項定義的系統特性 最後一個定義起決定作用。 |
1.通過 -D命令行選項定義的系統特性 2.由 任務裝入的特性 第一個定義最先被處理。 |
構建規則 |
構建規則更爲動態(類似於編程語言);它們是基於 Jelly 的可執行 XML。 |
構建規則或多或少是靜態的,除非使用<script>任務 |
擴展語言 |
插件是用 Jelly(XML)編寫的。 |
插件是用 Java 語言編寫的。 |
構建規則可擴展性 |
通過定義 <preGoal> 和 <postGoal> 使構建 goal 可擴展。 |
構建規則不易擴展;可通過使用 <script> 任務模擬 <preGoal> 和 <postGoal> 所起的作用。 |
Maven的書籍《Maven實戰》作 者許曉斌 著
本書代碼:http://www.juvenxu.com