Maven項目對象模型(POM),可以通過一小段描述信息來管理項目的構建,報告和文檔的項目管理工具軟件。
Maven 除了以程序構建能力為特色之外,還提供高級項目管理工具。由于 Maven 的缺省構建規則有較高的可重用性,所以常常用兩三行 Maven 構建腳本就可以構建簡單的項目。由于 Maven 的面向項目的方法,許多 Apache Jakarta 項目發文時使用 Maven,而且公司項目采用 Maven 的比例在持續增長。
Maven這個單詞來自于意第緒語(猶太語),意為知識的積累,最初在Jakata Turbine項目中用來簡化構建過程。當時有一些項目(有各自Ant build文件),僅有細微的差別,而JAR文件都由CVS來維護。于是希望有一種標準化的方式構建項目,一個清晰的方式定義項目的組成,一個容易的方式發布項目的信息,以及一種簡單的方式在多個項目中共享JARs。
那么,Maven 和 Ant 有什么不同呢?在回答這個問題以前,首先要強調一點:Maven 和 Ant 針對構建問題的兩個不同方面。Ant 為 Java 技術開發項目提供跨平臺構建任務。Maven 本身描述項目的高級方面,它從 Ant 借用了絕大多數構建任務。因此,由于 Maven 和 Ant代表兩個差異很大的工具,所以接下來只說明這兩個工具的等同組件之間的區別,如表 1 所示。
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。 |
構建規則或多或少是靜態的,除非使用 |