一:說明
使用前,有必要簡單的對maven做個簡單的介紹,這樣才比較輕松的熟悉本章節。
二:介紹
Maven是基于項目對象模型(POM),可以通過一小段描述資訊來管理項目的建構,報告和文檔的軟體項目管理工具。
Maven 除了以程式建構能力為特色之外,還提供進階項目管理工具。由于 Maven 的預設建構規則有較高的可重用性,是以常常用兩三行 Maven 建構腳本就可以建構簡單的項目。由于 Maven 的面向項目的方法,許多 Apache Jakarta 項目發文時使用 Maven,而且公司項目采用 Maven 的比例在持續增長。
Maven這個單詞來自于意第緒語,意為知識的積累,最早在Jakata Turbine項目中它開始被用來試圖簡化建構過程。當時有很多項目,它們的Ant build檔案僅有細微的差别,而JAR檔案都由CVS來維護。于是Maven創始者開始了Maven這個項目,該項目的清晰定義包括,一種很友善的釋出項目資訊的方式,以及一種在多個項目中共享JAR的方式。
三:特點
那麼,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。
建構規則或多或少是靜态的,除非使用
擴充語言
插件是用 Jelly(XML)編寫的。
插件是用 Java 語言編寫的。
建構規則可擴充性
通過定義 和 使建構 goal 可擴充。
建構規則不易擴充;可通過使用
Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組标準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運作定義在生命周期階段(phase)中插件(plugin)目标(goal)的邏輯。當你使用Maven的時候,你用一個明确定義的項目對象模型來描述你的項目,然後Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
Maven 有一個生命周期,當你運作 mvn install 的時候被調用。這條指令告訴 Maven 執行一系列的有序的步驟,直到到達你指定的生命周期。周遊生命周期旅途中的一個影響就是,Maven 運作了許多預設的插件目标,這些目标完成了像編譯和建立一個 JAR 檔案這樣的工作。
此外,Maven能夠很友善的幫你管理項目報告,生成站點,管理JAR檔案,等等。