歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 用maven做項目管理

用maven做項目管理

日期:2017/2/27 16:06:30   编辑:Linux教程
在Java 世界中我們很多的開發人員選擇用Ant 來構建項目,一個build.xml 能夠完成編譯、測試、打包、部署等很多任務,但我們也碰到了很多的問題,如jar 文件管理混亂,各個項目結構和build.xml 相差很大等等。而Maven 的出現,給項目提供了更多的支持。 1 簡介 Maven作為Apache的一個開源項目,旨在給項目管理提供更多的支持,主頁地址為http://maven.apache.org。它最早的意圖只是為了給apache組織的幾個項目提供統一的開發、測試、打包和部署,能讓開發者在多個項目中方便的切換。很多偉大的事業,出發點都很簡單,ebay就是很好的例證。而maven的成功又一次驗證了這一點,越來越多的項目開始使用maven。 基本原理 Maven的基本原理很簡單,采用遠程倉庫和本地倉庫以及一個類似build.xml的pom.xml,將pom.xml中定義的jar文件從遠程倉庫下 載到本地倉庫,各個應用使用同一個本地倉庫的jar,同一個版本的jar只需下載一次,而且避免每個應用都去拷貝jar。如圖1。同時它采用了現在流行的 插件體系架構,只保留最小的核心,其余功能都通過插件的形式提供,所以maven下載很小(1.1M),在執行maven任務時,才會自動下載需要的插 件。 這個基本原理與Pear-----PHP擴展與應用庫(the PHP Extension and Application Repository)的原理非常相似,都有一個官方的倉庫,都是微內核,通過網絡將需要的文件下載到本地,通過官方倉庫將相應的類庫進行統一管理。Pear已經成為PHP開發事實上的標准,而Maven在Java世界的地位也逐漸加強,成為標准指日可待。 另外由於插件的易開發性,現在有了非常多的可供選擇的插件,如與eclipse結合的插件,與test相關的插件,後面我們結合maven在項目中的使用進行詳細介紹。

2 項目管理 Maven官方把maven定義為一個項目管理工具,我們不妨看看maven能給我們的項目提供哪些好的支持。 2.1 項目標准化 Maven一個重要特性是定義了項目的標准模板,官方說法是最佳實踐。可以通過命令:mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app 創 建一個單一的maven項目。創建好的項目,具有了特定的項目結構。這個項目結構是參考業界的最佳實踐而成,為後面使用統一的maven命令打下了基礎, 如測試mvn test、打包mvn package等,無需寫一行腳本,就可以方便的實現眾多功能。Maven還提供其它一些類型模板,可以通過添加 -DarchetypeArtifactId={type}創建,如-DarchetypeArtifactId=maven-archetype- site,生成site類型的項目。 同時一些好的開源軟件使用了maven,也能作為很好的項目模板,如Equinox(Appfuse的簡化版),它的pom定義了對hiberante,spring…的依賴,可以通過ant new -Dapp.name=NAME快速生成項目原型,然後對pom文件進行裁減,以符合自身項目的需要。 有了這個標准,項目間能方便的進行交流,你也很容易了解其它使用maven項目的結構。對於企業來說,引入maven就自然引入了規范,這可比費時費力的寫文檔,定規范有效的多了。 2.2 文檔和報告 使用mvn site可以快速生成項目站點,apache很多開源項目站點都采用maven生成,會出現built by maven字樣的圖標。 而maven提供的針對如junit,checkstyle,pmd等的插件,能夠方便的進行測試和檢查並能直接生成報告。使用都很簡單,如mvn surefire-report:report 就能自動進行junit測試,並生成junit報告,mvn pmd:pmd生成pmd報告。具體使用可以在http://maven.apache.org/plugins/index.html 找到。 2.3 類庫管理 Maven一個很重要的特色就是類庫管理。通過在pom.xml中定義jar包版本和依賴,能夠方便的管理jar文件。以下是一個簡單的jar定義片斷:
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> <version>3.1</version> <type>jar</type> <scope>runtime</scope> </dependency> 這個片斷告訴我們,依賴的jar包groupId為org.hibernate,artifactId為hibernate,版本為3.1,scope為runtime。在實際項目中,會將M2_REPO(maven 本地倉庫地址 )/ org/hibernate / hibernate /3.1/ hibernate -3.1.jar放入classpath。 同時maven會通過pom.xml管理jar包間的依賴。比如上面的hibernate-3.1.jar同級目錄肯定會有一個hibernate -3.1.pom,在這個pom文件中指定了這個jar對其它一些jar的依賴。而這個pom文件是遠程倉庫提供,無需進行修改,執行maven相關命令 就會自動根據相關依賴去下載jar包。這樣只需定義對hibernate的依賴而無需關心相關jar,在構建項目上方便了很多。 因為pom文件對jar的管理,也產生了一個很吸引人的特性:項目文件很小 。以往一個web項目中,jar文件都要放入WEB-INF/lib下,並放入cvs(svn)中,很容易就達到幾十M。而通過maven,只需一個pom.xml,在執行mvn eclipse:eclipse時再去遠程倉庫下載,項目文件一般只需幾百K。 2.4 發布管理 使用maven可以方便的進行項目發表管理。在項目開發到一定階段,可以使用mvn package打包,它會自動先運行mvn test,跑所有的testcase,只有全部通過才能正確打包。生成的war包(如果項目的packaging為war)在target目錄下。這個war包與使用ant腳本生成一樣,但無需一行腳本,這也是maven對比ant的優勢之一。使用mvn install將編譯和打包好的文件發布到distributionManager指定的遠程repository。使用mvn deploy可以自動管理項目版本。
3 使用 maven Maven使用簡單,插件豐富且經過大量項目考驗,在項目中引入的風險很小。筆者在項目中使用maven,新進員工在半小時內就能成功使用maven構建 項目,並很快掌握幾個常用的命令。Maven也不需要什麼特殊的設施。如果項目全部使用開源軟件,並且不需要maven管理項目版本,只需要一個SCM環 境(CVS或SVN),共享開發源碼就可以。把pom.xml中的repository設為官方地址就行,配置如下:
<repository> <id>central</id> <url>http://www.ibiblio.org/maven2</url> </repository> 這個官方remote repository上有非常多的開源軟件,應該能滿足大部分項目的需要。如果有項目需要而它上面暫時還沒有的軟件,或者希望使用公司內部的軟件,那麼就需要自己配置一個repository了。 3.1 自建私服 傳奇私服大家應該都聽過,一個網吧自己搞個私服,一伙人免費在上面砍殺。官方因此少賺了很多錢,因此總想打擊。而maven官方卻對自建私服很是支持,我 們總算可以正正當當搞把私服了(Springside的老大江南白衣就是創建私服的好手)。我們就來介紹下自建私服的最快方法。 首先需要一個http server,找台服務器裝上apache就行。放一個空的maven目錄到htdocs下,假設服務器ip為192.168.0.1,確認能用http://192.168.0.1/maven 訪問到。然後在自己機器上裝好maven2,初始化好項目,在pom.xml放入需要的jar定義,運行如mvn eclipse:eclipse就自動從官方下載jar到本地,如果不做配置,默認本地repository為${user.home}/.m2/。對於windows xp來說一般在C:\Documents and Settings\%username%\.m2下,其中%username%為操作系統登錄用戶名。這時你可以看到${user.home}/.m2/下多了個repository目錄,裡面有很多的項目相關jar,目錄按groupId/ artifactId/version排好。把repository目錄整個拷貝到apache服務器的maven目錄下,如果需要官方缺少的jar或公司內部jar,仿照這個目錄結構,做好jar放到maven目錄下。自建私服成功! 要使用私服,只需修改pom.xml,在repository配置後加上:
<repository> <id>companyName</id> <url>http:// ${ip}/maven</url> </repository> 這樣需要下載jar時,會先到本地repository查看,沒有下載過再到官方搜索,沒有找到再到後面的repository查找。 3.2 安裝配置 Maven的安裝很簡單: 1. 從apache網站上下載maven安裝包,實際上就是個壓縮文件。將其解壓到你想要存放maven的目錄中。在這裡假設你將maven解壓到C:\Program Files\Apache Software Foundation\maven-2.0.4 中。 2.C:\Program Files\Apache Software Foundation\maven-2.0.4\bin 設到你的系統環境變量 %PATH% 中。 3. 同時確保你已經將你的 JDK 安裝目錄設為 java_home 系統變量。 4. 打開個命令行窗口,運行mvn –version驗證是否安裝成功。 5. 如果使用eclipse,在運行mvn eclipse:eclipse生成eclipse項目文件後,需加入M2_REPO到Classpath Variables中,指向本地repository,例如:C:/Documents and Settings/Owner/.m2/repository。 3.3 基本使用流程 在項目進程中,不必做什麼配置,在pom.xml同級目錄,cmd使用簡單的maven命令,就可以完成初始化 ->開發-> 測試-> 發布 的全過程。Maven的基本使用流程如下圖:


其中在初次使用命令mvn eclipse:eclipse時會下載很多的插件和jar,可能需要較長的時間,建議泡杯咖啡,和同事吹吹牛。如果失敗,可能是網絡問題,可以重新運行mvn eclipse:eclipse,已下載好的插件和jar不會再下。運行mvn test和mvn package等命令,產出物都會放在target目錄下。 總結: Maven作為新的項目管理工具,簡單易用,能對項目的各個階段提供大力支持,同時由於它易擴展的插件體系架構,出現了越來越多的插件,也使得其功能更加 強大。短短一篇文章,實在很難把其特點一一盡述,maven還有很多好用的功能和插件等待我們去使用和開發。而學習新技術的最好方式就是實踐,大家如果有 興趣,盡快下載一個最新版,開始你的maven之旅吧!
Copyright © Linux教程網 All Rights Reserved