??? 相信maven1 大家都已經(jīng)很熟悉了,具體maven能做什么,就不詳細(xì)說(shuō)了。個(gè)人覺得maven在開源項(xiàng)目中用的還是比較多的,公司內(nèi)部,就不太清楚了。我以前的公司用過一段時(shí)間,不過后來(lái)就沒有下文了。
??? 與maven1 相比,maven2可算是幾乎重寫了,不過從速度來(lái)說(shuō)應(yīng)該更快。
??? 主要的幾個(gè)新特性包括:(詳細(xì)參考http://www.ibm.com/developerworks/cn/opensource/os-maven2/index.html)
??? 1. 更快、更簡(jiǎn)單
?? ???? 速度方面可以比上ant了
??? 2. 更少的配置文件
??? ??? 現(xiàn)在的配置文件只剩下了settings.xml和pom.xml了。
??? 3.? Plugin語(yǔ)言更換
?? ?? ? 語(yǔ)言開始支持java,BeanShell和ant
??? 4.? 提供了預(yù)定義的模版
??? ??? 這點(diǎn)是最有幫助的,用戶可以自己定義自己的項(xiàng)目模版了,就像用appfuse一樣生成項(xiàng)目結(jié)構(gòu)
??? 5. 生命周期的引入
???? ??? 在Maven2中有了明確的生命周期概念,而且都提供與之對(duì)應(yīng)的命令,使得項(xiàng)目構(gòu)建更加清晰明了。
??? 6.? 新增Dependency Scope?? ?
???? ??? 這點(diǎn)也比較重要,有些用于test范圍的包,可以不用加入依賴了
??? 7.? 傳遞依賴,簡(jiǎn)化依賴管理
??? ??? 這是最為方便的,可以省了很多配置。如a 依賴 b,b 依賴c? 默認(rèn) a也會(huì)依賴 c。但是也會(huì)帶來(lái)隱患,如版本沖突。不過maven 也已經(jīng)考慮到了,可以使用exclusions來(lái)排除相應(yīng)的重復(fù)依賴
介紹了那么多,現(xiàn)在切入正題,開始maven2 之旅:
首些下載需要的工具:
maven2: http://maven.apache.org/download.html 最主要的
maven-proxy:用來(lái)代理repository,使用本地庫(kù)代替maven2的遠(yuǎn)程庫(kù)
??? ??? ??? http://maven-proxy.codehaus.org/
continuum:一個(gè)不錯(cuò)的持續(xù)整合工具,用于自動(dòng)build。支持ant,maven
http://maven.apache.org/continuum/
svn:版本控制工具相信都已經(jīng)配置了。
maven 用于eclipse的插件 ,在maven主站有下載,不錯(cuò)的插件。當(dāng)然idea也有相應(yīng)的插件
最后,http,服務(wù)器是必不可少的。用于內(nèi)部開發(fā)使用。
可以使用apache ,或者jetty? http://www.mortbay.org/
安裝:
??? 安裝maven2很簡(jiǎn)單,把下載來(lái)的maven包解開就行了。(目前我的配置都在win2003上,還沒有應(yīng)用于linux,所有所有的配置都針對(duì)windows).增加相應(yīng)的環(huán)境變量m2_home=maven2的安裝目錄,不要忘了設(shè)置java_home的目錄。另外在path中增加%m2_home%\bin;可以直接在命令行下面使用mvn。
其他工具的安裝在后續(xù)的文章會(huì)介紹。
開始第一個(gè)mvean2項(xiàng)目:
? mvn archetype:create -DgroupId=com.mycompany.app \
??? ??? ??? ?????? -DartifactId=my-app
? 簡(jiǎn)單介紹一下 groupId相當(dāng)于你的組織,如同org.springframework,會(huì)轉(zhuǎn)化為相應(yīng)得本地路徑 artifactId,你主要的jar包名稱,也就是你要打成的jar 名稱。
編譯應(yīng)用資源
??? mvn complile
??????? 編譯相應(yīng)的jave 文件
編譯測(cè)試類以及運(yùn)行測(cè)試類
??? mvn test
?????? 運(yùn)行測(cè)試類
如果只想編譯test,執(zhí)行
??? mvn test-compile
打包和安裝你的本地庫(kù)
打包:
??? mvn package
安裝:
??? mvn install
創(chuàng)建web site
??? mvn site
清除所有輸出
??? mvn clean
創(chuàng)建相關(guān)的ide文件
??? mvn idea:idea??? ??? 或者??? mvn eclipse:eclipse
??? 順便說(shuō)一下,maven2 是有生命周期這一概念的,也就是說(shuō)如果你執(zhí)行package,相應(yīng)的以前步驟,如compile,test等都會(huì)自動(dòng)執(zhí)行。
剛開始執(zhí)行會(huì)比較慢,需要從maven2遠(yuǎn)程庫(kù)中下載所有的文件到本地。如果你的本地沒有相應(yīng)的依賴包,則每次maven都會(huì)去遠(yuǎn)程下載,所以配置一個(gè)鏡像庫(kù)就比較重要了。
??? 另外介紹一下主要的參考資料:
??? mavn2 主站:主要的pom和settings.xml參考資料
??? Better
Builds with Maven
??? http://www.mergere.com/m2book_download.jsp
??? 不錯(cuò)的書,主要通過例子介紹。可惜都是E文的,花點(diǎn)時(shí)間還是值得的。
??? 下一個(gè)主題,會(huì)說(shuō)一下maven2的主要配置。
posted on 2006-12-02 10:46
布衣郎 閱讀(2134)
評(píng)論(0) 編輯 收藏 所屬分類:
配置管理