Maven 和 Ant 有什么不同呢?在回答這個問題以前,首先要強調一點:Maven 和 Ant 針對構建問題的兩個不同方面。Ant 為 Java 技術開發項目提供跨平台構建任務。Maven 本身描述項目的高級方面,它從 Ant 借用了絕大多數構建任務。因此,由於 Maven 和 Ant代表兩個差異很大的工具,所以接下來只說明這兩個工具的等同組件之間的區別,如下表所示:
| Maven | Ant | |
| 標准構建文件 | project.xml 和 maven.xml |
build.xml |
| 特性處理順序 |
${maven.home}/bin/driver.properties
${project.home}/project.properties
${project.home}/build.properties
${user.home}/build.properties
通過 -D 命令行選項定義的系統特性
最后一個定義起決定作用。 |
通過 -D 命令行選項定義的系統特性
由 任務裝入的特性
第一個定義最先被處理。 |
| 構建規則 | 構建規則更為動態(類似於編程語言);它們是基於 Jelly 的可執行 XML。 | 構建規則或多或少是靜態的,除非使用<script>任務 |
| 擴展語言 |
插件是用 Jelly(XML)編寫的。 | 插件是用 Java 語言編寫的。 |
| 構建規則可擴展性 | 通過定義 <preGoal> 和 <postGoal> 使構建 goal 可擴展。 | 構建規則不易擴展;可通過使用 <script> 任務模擬 <preGoal> 和 <postGoal> 所起的作用。 |
Maven是一個
項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標准集合,一個
項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中
插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然后Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
Maven 有一個生命周期,當你運行 mvn install 的時候被調用。這條命令告訴 Maven 執行一系列的有序的步驟,直到到達你指定的生命周期。遍歷生命周期旅途中的一個影響就是,Maven 運行了許多默認的
插件目標,這些目標完成了像編譯和創建一個 JAR 文件這樣的工作。
此外,Maven能夠很方便的幫你管理項目報告,生成站點,管理JAR文件,等等。
