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