在講為什么使用maven之前我想說(shuō)一下,antx,很多人知道ant,其實(shí)antx是阿里人自己搞的一套基于ant擴展的在某些方面類(lèi)似于mavnen的工具,我們甚至有eclipse的antx插件,可想而知antx在阿里的項目管理中的重要地位。它有很多優(yōu)秀之處:
1. 可以比較好的支持第二方庫
2. 支持項目之間的依賴(lài)和繼承
3. antx可以用jelly來(lái)寫(xiě)插件
4. car包的支持,這里簡(jiǎn)單介紹下car包:
car是war包的一種中間格式,在打包的時(shí)候包含vm頁(yè)面,webx.xml,classes等資源,但是沒(méi)有包含
WEB-INF/lib,一個(gè)war包能包含多個(gè)car 包,在war包打包的時(shí)候,能夠把web工程依賴(lài)的car中的jar
包,包括傳遞依賴(lài)的jar包,一起合并到WEB-INF/lib下
5. auto config: auto-config.xml配置項目中需要被替換的資源
為什么要引入maven
先說(shuō)一下Antx在存在哪些問(wèn)題:
1. Antx第三方庫的管理比較復雜,如果某個(gè)項目需要一個(gè)新的jar包或者新版本的jar包,則需要走一個(gè)嚴格申請流程,并且需要自己提交相關(guān)的jar包
2. Antx對jar包的版本控制,changelist等沒(méi)有工具上的支持,導致很多項目都是1.0-SNAPSHOT從頭用到尾,導致包版本比較不好控制。
3. Antx對SCM打包部署的支持不是很強。
4. Antx在于IDE的兼容性上存在問(wèn)題,為了讓eclipse支持antx,我們需要單獨寫(xiě)一個(gè)antx插件來(lái)讓eclipse支持antx,對于其他的一些比較好的IDE比如Intellij IDEA,是不支持antx的。
5. 現在IDE很多都有一鍵式DEBUG的功能,包括集成對應用服務(wù)器的支持,antx在這方面存在不足。
Maven能解決這些問(wèn)題么,還有更好的優(yōu)勢么, 答案是YES
1. Maven的庫是由開(kāi)源組織維護,不需要我們再花精力去管第三方庫,即使自己維護,也比較方便。
2. Maven對jar包的版本管理有工具上的支持,比如將Release版本和Snapshot版本區分開(kāi),有利于SCM管理。
3. Maven是標準,用過(guò)的人多,不需要額外培訓。
4. Maven的plugin比較多,可以有更多功能,Maven現有體系比較開(kāi)放,采用的技術(shù)相對比較通用和成熟,plugin的機制也可以便于我們擴展更多功能。
5. Maven的庫下載是即用即下,不需要實(shí)現全部down下來(lái)。Maven的插件也是自動(dòng)升級,可以方便的
我們擴展新功能。
6. 可以很方便的與eclipse, IDEA這樣的主流的IDE集成
7. 倉庫管理器:它的出現有兩個(gè)目的:首先它的角色是一個(gè)高度可配置的介于你的組織與公開(kāi)Maven倉庫之間的代理,其次它為你的組織提供了一個(gè)可部署你組織內部生成的構件(第二方庫)的地方。
8. 版本管理功能,這里的版本管理不是指第三方庫的版本管理,而是項目的版本管理
9.站點(diǎn)功能:它的出現讓我們可以對項目的狀態(tài)一目了然,可以自動(dòng)的把項目的狀態(tài)和各種報表以站點(diǎn)的形式發(fā)布到內部網(wǎng)或者外部網(wǎng),可以隨時(shí)隨地查看項目狀態(tài)。有很多中報表可以選擇,包括,doc生成,代碼規范的檢查,自動(dòng)bug檢查,單元測試報表,單元測試的代碼覆蓋率報表
在后面的文章我會(huì )一一描述是如何在項目中使用和配置maven的各種實(shí)用的功能。

