maven 作項目管理

在程序員發表的一篇maven文章,跟你們共享。
Maven 作項目管理
html

在 Java世界中咱們不少的開發人員選擇用 Ant來構建項目,一個 build.xml可以完成編譯、測試、打包、部署等不少任務,但咱們也碰到了不少的問題,如 jar文件管理混亂,各個項目結構和 build.xml相差很大等等。而 Maven的出現,給項目提供了更多的支持。 java

用maven的好處:程序員

Maven中使用約定,約定java源代碼代碼必須放在哪一個目錄下,編譯好的java代碼又必須放到哪一個目錄下,這些目錄都有明確的約定。web

  Maven的每個動做都擁有一個生命週期,例如執行 mvn install 就能夠自動執行編譯,測試,打包等構建過程spring

  只須要定義一個pom.xml,而後把源碼放到默認的目錄,Maven幫咱們處理其餘事情apache

  使用Maven能夠進行項目高度自動化構建,依賴管理(這是使用Maven最大的好處),倉庫管理。網絡

1        簡介

Maven 做爲 Apache 的一個開源項目,旨在給項目管理提供更多的支持,主頁地址爲 http://maven.apache.org 。它最先的意圖只是爲了給 apache 組織的幾個項目提供統一的開發、測試、打包和部署,能讓開發者在多個項目中方便的切換。不少偉大的事業,出發點都很簡單, ebay 就是很好的例證。而 maven 的成功又一次驗證了這一點,愈來愈多的項目開始使用 maven 。 架構

基本原理 app

Maven 的基本原理很簡單,採用遠程倉庫和本地倉庫以及一個相似 build.xml 的 pom.xml ,將 pom.xml 中定義的 jar 文件從遠程倉庫下載到本地倉庫,各個應用使用同一個本地倉庫的 jar ,同一個版本的 jar 只需下載一次,並且避免每一個應用都去拷貝 jar 。如圖 1 。同時它採用瞭如今流行的插件體系架構,只保留最小的核心,其他功能都經過插件的形式提供,因此 maven 下載很小( 1.1M ),在執行 maven 任務時,纔會自動下載須要的插件。 eclipse

這個基本原理與 Pear ――PHP擴展與應用庫( the PHP Extension and Application Repository )的原理很是類似,都有一個官方的倉庫,都是微內核,經過網絡將須要的文件下載到本地,經過官方倉庫將相應的類庫進行統一管理。 Pear 已經成爲 PHP 開發事實上的標準,而 Maven 在 Java 世界的地位也逐漸增強,成爲標準指日可待。

另外因爲插件的易開發性,如今有了很是多的可供選擇的插件,如與 eclipse 結合的插件,與 test 相關的插件,後面咱們結合 maven 在項目中的使用進行詳細介紹。

 


圖 1

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.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 目錄下。若是在使用過程當中有什麼問題,也能夠和我聯繫, mail:pesome@gmail.com ,咱們一塊兒來嘗試解決。

 

總結:

Maven 做爲新的項目管理工具,簡單易用,能對項目的各個階段提供大力支持,同時因爲它易擴展的插件體系架構,出現了愈來愈多的插件,也使得其功能更增強大。短短一篇文章,實在很難把其特色一一盡述, maven 還有不少好用的功能和插件等待咱們去使用和開發。而學習新技術的最好方式就是實踐,你們若是有興趣,儘快下載一個最新版,開始你的 maven 之旅吧!

 

做者簡介:張俊,網名 pesome ,上海交大軟件工程碩士, 2 年 JavaEE 開發經驗,資歷尚淺。去年下半年開始接觸 spring 等開源軟件,併產生了濃厚的興趣。今年 3 月開始作 www.openfans.net ,用一堆開源軟件搭建而成,但願爲中國的開源事業作出一點貢獻。

 

參考文檔:

1.       http://maven.apache.org 官方網站文檔

2.       http://www-128.ibm.com/developerworks/cn/opensource/os-maven2/ Maven2 的新特性

相關文章
相關標籤/搜索