<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    用Maven做項目管理

    在程序員發表的一篇maven文章,跟大家共享。
    Maven 做項目管理

    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 下載很?。?/span> 1.1M ),在執行 maven 任務時,才會自動下載需要的插件。

    這個基本原理與 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.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 目錄下。如果在使用過程中有什么問題,也可以和我聯系, 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 的新特性

    posted on 2006-09-21 11:37 pesome 閱讀(18689) 評論(10)  編輯  收藏 所屬分類: 開源軟件

    評論

    # re: 用Maven做項目管理 2006-09-21 23:31 jeffjie

    項目剛搭上了Maven這班車。
    這篇文章就是Persome在程序員上登的吧?  回復  更多評論   

    # re: 用Maven做項目管理 2006-09-22 09:26 pesome

    恩,也是想推廣maven,讓更多的項目使用maven。  回復  更多評論   

    # re: 用Maven做項目管理 2006-12-22 16:22 fy

    我按照你的方法設置了私服,拷貝了自己naf-1.0.0.jar包到服務器上,并且刪除了本機上,可是運行通不過。下面是我執行后的錯誤結果

    [INFO] task-segment: [compile]
    [INFO] ----------------------------------------------------------------------------
    [INFO] [resources:resources]
    [INFO] Using default encoding to copy filtered resources.
    Downloading: http://10.10.100.22/maven/nfa/nfa/1.0.0/nfa-1.0.0.pom
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Error building POM (may not be this project's POM).


    Project ID: nfa:nfa

    Reason: Error getting POM for 'nfa:nfa' from the repository: Error transferring file
    nfa:nfa:pom:1.0.0

    from the specified remote repositories:
    central (http://repo1.maven.org/maven2),
    itsm (http://10.10.100.22/maven)  回復  更多評論   

    # re: 用Maven做項目管理 2006-12-25 11:05 pesome

    你看看nfa有這個pom文件嗎,然后看pom文件格式是否正確??梢詤⒖计渌浖膒om,比如spring  回復  更多評論   

    # re: 用Maven做項目管理 2007-01-26 13:09 HIMMEL

    現在Maven成了很多項目的標準件了  回復  更多評論   

    # re: 用Maven做項目管理 2007-01-26 13:52 pesome

    呵呵,有標準不是很好嗎?  回復  更多評論   

    # re: 用Maven做項目管理[未登錄] 2007-08-07 19:25 sclsch

    maven還沒體會到。  回復  更多評論   

    # re: 用Maven做項目管理 2008-12-26 23:17 Yvon

    在學習一些開源的框架的時候發現很多都已經用maven來構建了,學習ing  回復  更多評論   

    # re: 用Maven做項目管理 2010-04-24 00:44 Mofen

    謝謝,提供這么通俗易懂的文章  回復  更多評論   

    # re: 用Maven做項目管理[未登錄] 2011-12-16 10:27 TonyWang

    我已有的項目,目錄結構不同MAVEN的標準結構,如何將該項目用MAVEN管理起來  回復  更多評論   

    <2011年12月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    主要記錄作者在學習java中的每一步足跡。除非特別說明,所有文章均為本blog作者原創,如需轉載請注明出處和原作者,如用于商業目的,需跟作者本人聯系。
    歡迎大家訪問:

    常用鏈接

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    java技術

    人間百態

    朋友們的blog

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费无码又爽又刺激毛片| 久久久久亚洲AV成人网| 午夜在线免费视频| 亚洲精品自在在线观看| 7723日本高清完整版免费| 亚洲av成本人无码网站| 亚洲日韩精品一区二区三区| 9久9久女女免费精品视频在线观看| 国产精品亚洲专区无码牛牛 | 国产精品亚洲美女久久久| 任你躁在线精品免费| 亚洲丰满熟女一区二区v| 亚洲一区二区三区在线播放| 波多野结衣中文字幕免费视频| 男女啪啪免费体验区| 亚洲男女一区二区三区| 亚洲成A人片77777国产| 91免费资源网站入口| 中文在线观看免费网站| 亚洲国产精品99久久久久久| 亚洲国产人成在线观看69网站 | 亚洲日韩人妻第一页| 美女视频黄的全免费视频| 国产一级黄片儿免费看| 国产亚洲精品美女久久久久久下载| 亚洲天堂中文字幕| 国产aⅴ无码专区亚洲av麻豆| 毛片免费观看的视频| 最近中文字幕mv免费高清视频8 | 一个人看的www在线免费视频 | 亚洲三级在线播放| 亚洲精品中文字幕无码蜜桃| 在线观看免费亚洲| 青草草色A免费观看在线| 国产成人免费视频| 成在人线av无码免费高潮水| 偷自拍亚洲视频在线观看| 亚洲AV无码专区在线观看成人| 亚洲性无码av在线| 日木av无码专区亚洲av毛片| 亚洲欧洲日产国码无码久久99|