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