Maven簡介java
Maven是一個項目管理工具,它包含了一個項目對象模型(Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來定義生命週期階段(Phase)中插件(plugin)目標(gole)的邏輯。當你使用Maven的時候,你用一個明肯定義的項目對象模型來描述你的項目。程序員
Maven與ant對比服務器
Ant工具僅僅關注預處理,編譯,打包,測試和分發,是一個構建工具。而Maven功能是Ant 的超集,屬於項目生命週期管理工具不單單關注於構建階段,Maven還包括生成報告,生成Web站點等等。框架
● Antmaven
Ant沒有約定一個通常項目的目錄結構,必須明確告訴ant到哪去找源代碼等等信息。工具
Ant是程序化的,必要告訴它何時該作什麼事情。測試
Ant沒有生命週期,必須定義目標和目標之間的依賴,好比爲每一個目標配置任務。.net
● Maven插件
Maven擁有約定,你遵照了約定Maven就知道去哪尋找源代碼等等。xml
Maven是聲明式的,只須要建立一個pom.xml,maven就知道該作什麼事情。
Maven擁有一個生命週期,當運行Maven install,這條語句告訴Maven執行一系列步驟,這些步驟也是約定好的,不須要手動指定執行順序。
Ant和Maven的選擇不是一成不變的,好比你如今的構建生命週期須要高度可自定義,則Maven的固定生命週期就不太適用。
Maven的核心理念——約定優於配置
系統,類庫,框架應該假定合理的默認值,而非要求提供沒必要要的配置,配置雖然能夠根據我的狀況和喜愛定製,可是卻嚴重影響了項目人員之間的協做溝通。
Maven的約定:
源代碼:src/main/Java
資源文件:src/main/resource
測試代碼:src/test
編譯後的二進制文件:/target/classes
可分發的最終文件(.jar,.war,.ear):/target
(若是換成非約定優於配置的ant作以上的事情須要爲每一個都配置目錄,若是有特殊需求須要配置路徑的,maven也支持手動配置,可是默認爲以上約定)
Maven成功的核心緣由——項目配置統一接口
在之前,從版本服務器上檢出兩個項目,要想將它們打包成最終的可發佈文件是很是困難的,由於你須要瞭解這兩個項目是什麼結構,分別須要發佈什麼東西,每一個東西放在什麼位置,如今新的程序員不須要了解這些,只須要執行maven install就能方便構建。
Maven倉庫
Maven 爲全世界的 Java 開發者提供一個免費的中央倉庫,在其中幾乎能夠找到任何的流行開源類庫;並且還支持私服(本地服務器)倉庫,已達到更快獲取類庫的速度。經過一些 Maven 的衍生工具(如 Nexus ),咱們還能對其進行快速地搜索。
Maven是基於插件的
Maven自己不作什麼事情,幾乎全部操做都是在插件上完成的,第一次執行命令會從中央服務器上下載命令執行插件來完成操做。
轉載:http://blog.csdn.net/wangpeng047/article/details/10035583