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

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

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

    OMG,到底在尋找什么..................
    (構(gòu)造一個完美的J2EE系統(tǒng)所需要的完整知識體系)
    posts - 198,  comments - 37,  trackbacks - 0

    在程序員發(fā)表的一篇maven文章,跟大家共享。
    Maven 做項(xiàng)目管理

    Java世界中我們很多的開發(fā)人員選擇用 Ant來構(gòu)建項(xiàng)目,一個 build.xml能夠完成編譯、測試、打包、部署等很多任務(wù),但我們也碰到了很多的問題,如 jar文件管理混亂,各個項(xiàng)目結(jié)構(gòu)和 build.xml相差很大等等。而 Maven的出現(xiàn),給項(xiàng)目提供了更多的支持。

    1??????? 簡介

    Maven 作為 Apache 的一個開源項(xiàng)目,旨在給項(xiàng)目管理提供更多的支持,主頁地址為 http://maven.apache.org 。它最早的意圖只是為了給 apache 組織的幾個項(xiàng)目提供統(tǒng)一的開發(fā)、測試、打包和部署,能讓開發(fā)者在多個項(xiàng)目中方便的切換。很多偉大的事業(yè),出發(fā)點(diǎn)都很簡單, ebay 就是很好的例證。而 maven 的成功又一次驗(yàn)證了這一點(diǎn),越來越多的項(xiàng)目開始使用 maven 。

    基本原理

    Maven 的基本原理很簡單,采用遠(yuǎn)程倉庫和本地倉庫以及一個類似 build.xml pom.xml ,將 pom.xml 中定義的 jar 文件從遠(yuǎn)程倉庫下載到本地倉庫,各個應(yīng)用使用同一個本地倉庫的 jar ,同一個版本的 jar 只需下載一次,而且避免每個應(yīng)用都去拷貝 jar 。如圖 1 。同時它采用了現(xiàn)在流行的插件體系架構(gòu),只保留最小的核心,其余功能都通過插件的形式提供,所以 maven 下載很小( 1.1M ),在執(zhí)行 maven 任務(wù)時,才會自動下載需要的插件。

    這個基本原理與 Pear ――PHP擴(kuò)展與應(yīng)用庫( the PHP Extension and Application Repository )的原理非常相似,都有一個官方的倉庫,都是微內(nèi)核,通過網(wǎng)絡(luò)將需要的文件下載到本地,通過官方倉庫將相應(yīng)的類庫進(jìn)行統(tǒng)一管理。 Pear 已經(jīng)成為 PHP 開發(fā)事實(shí)上的標(biāo)準(zhǔn),而 Maven Java 世界的地位也逐漸加強(qiáng),成為標(biāo)準(zhǔn)指日可待。

    另外由于插件的易開發(fā)性,現(xiàn)在有了非常多的可供選擇的插件,如與 eclipse 結(jié)合的插件,與 test 相關(guān)的插件,后面我們結(jié)合 maven 在項(xiàng)目中的使用進(jìn)行詳細(xì)介紹。


    1

    2??????? 項(xiàng)目管理

    Maven 官方把 maven 定義為一個項(xiàng)目管理工具,我們不妨看看 maven 能給我們的項(xiàng)目提供哪些好的支持。

    2.1?????? 項(xiàng)目標(biāo)準(zhǔn)化

    Maven 一個重要特性是定義了項(xiàng)目的標(biāo)準(zhǔn)模板,官方說法是最佳實(shí)踐??梢酝ㄟ^命令: mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app 創(chuàng)建一個單一的 maven 項(xiàng)目。創(chuàng)建好的項(xiàng)目,具有了特定的項(xiàng)目結(jié)構(gòu)。這個項(xiàng)目結(jié)構(gòu)是參考業(yè)界的最佳實(shí)踐而成,為后面使用統(tǒng)一的 maven 命令打下了基礎(chǔ),如測試 mvn test 、打包 mvn package 等,無需寫一行腳本,就可以方便的實(shí)現(xiàn)眾多功能。 Maven 還提供其它一些類型模板,可以通過添加 -DarchetypeArtifactId= type }創(chuàng)建,如 -DarchetypeArtifactId=maven-archetype-site ,生成 site 類型的項(xiàng)目。

    同時一些好的開源軟件使用了 maven ,也能作為很好的項(xiàng)目模板,如 Equinox Appfuse 的簡化版),它的 pom 定義了對 hiberante,spring… 的依賴,可以通過 ant new -Dapp.name=NAME 快速生成項(xiàng)目原型,然后對 pom 文件進(jìn)行裁減,以符合自身項(xiàng)目的需要。

    有了這個標(biāo)準(zhǔn),項(xiàng)目間能方便的進(jìn)行交流,你也很容易了解其它使用 maven 項(xiàng)目的結(jié)構(gòu)。對于企業(yè)來說,引入 maven 就自然引入了規(guī)范,這可比費(fèi)時費(fèi)力的寫文檔,定規(guī)范有效的多了。

    2.2?????? 文檔和報(bào)告

    使用 mvn site 可以快速生成項(xiàng)目站點(diǎn), apache 很多開源項(xiàng)目站點(diǎn)都采用 maven 生成,會出現(xiàn) built by maven 字樣的圖標(biāo)。

    maven 提供的針對如 junit , checkstyle pmd 等的插件,能夠方便的進(jìn)行測試和檢查并能直接生成報(bào)告。使用都很簡單,如 mvn surefire-report:report 就能自動進(jìn)行 junit 測試,并生成 junit 報(bào)告, mvn pmd:pmd 生成 pmd 報(bào)告。具體使用可以在 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 。在實(shí)際項(xiàng)目中,會將 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 文件是遠(yuǎn)程倉庫提供,無需進(jìn)行修改,執(zhí)行 maven 相關(guān)命令就會自動根據(jù)相關(guān)依賴去下載 jar 包。這樣只需定義對 hibernate 的依賴而無需關(guān)心相關(guān) jar ,在構(gòu)建項(xiàng)目上方便了很多。

    因?yàn)?/span> pom 文件對 jar 的管理,也產(chǎn)生了一個很吸引人的特性:項(xiàng)目文件很小。以往一個 web 項(xiàng)目中, jar 文件都要放入 WEB-INF/lib 下,并放入 cvs(svn) 中,很容易就達(dá)到幾十 M 。而通過 maven ,只需一個 pom.xml ,在執(zhí)行 mvn eclipse:eclipse 時再去遠(yuǎn)程倉庫下載,項(xiàng)目文件一般只需幾百 K

    2.4?????? 發(fā)布管理

    使用 maven 可以方便的進(jìn)行項(xiàng)目發(fā)表管理。在項(xiàng)目開發(fā)到一定階段,可以使用 mvn package 打包,它會自動先運(yùn)行 mvn test ,跑所有的 testcase ,只有全部通過才能正確打包。生成的 war 包(如果項(xiàng)目的 packaging war )在 target 目錄下。這個 war 包與使用 ant 腳本生成一樣,但無需一行腳本,這也是 maven 對比 ant 的優(yōu)勢之一。使用 mvn install 將編譯和打包好的文件發(fā)布到 distributionManager 指定的遠(yuǎn)程 repository 。使用 mvn deploy 可以自動管理項(xiàng)目版本。

    ?

    3 ??????? 使用 maven

    Maven 使用簡單,插件豐富且經(jīng)過大量項(xiàng)目考驗(yàn),在項(xiàng)目中引入的風(fēng)險很小。筆者在項(xiàng)目中使用 maven ,新進(jìn)員工在半小時內(nèi)就能成功使用 maven 構(gòu)建項(xiàng)目,并很快掌握幾個常用的命令。 Maven 也不需要什么特殊的設(shè)施。如果項(xiàng)目全部使用開源軟件,并且不需要 maven 管理項(xiàng)目版本,只需要一個 SCM 環(huán)境( CVS SVN ),共享開發(fā)源碼就可以。把 pom.xml 中的 repository 設(shè)為官方地址就行,配置如下:

    <repository>

    ????? <id>central</id>

    ????? <url>http://www.ibiblio.org/maven2</url>

    </repository>

    這個官方 remote repository 上有非常多的開源軟件,應(yīng)該能滿足大部分項(xiàng)目的需要。如果有項(xiàng)目需要而它上面暫時還沒有的軟件,或者希望使用公司內(nèi)部的軟件,那么就需要自己配置一個 repository 了。

    3.1?????? 自建私服

    傳奇私服大家應(yīng)該都聽過,一個網(wǎng)吧自己搞個私服,一伙人免費(fèi)在上面砍殺。官方因此少賺了很多錢,因此總想打擊。而 maven 官方卻對自建私服很是支持,我們總算可以正正當(dāng)當(dāng)搞把私服了( Springside 的老大江南白衣就是創(chuàng)建私服的好手)。我們就來介紹下自建私服的最快方法。

    首先需要一個 http server ,找臺服務(wù)器裝上 apache 就行。放一個空的 maven 目錄到 htdocs 下,假設(shè)服務(wù)器 ip 192.168.0.1 ,確認(rèn)能用 http://192.168.0.1/maven 訪問到。然后在自己機(jī)器上裝好 maven2 ,初始化好項(xiàng)目,在 pom.xml 放入需要的 jar 定義,運(yùn)行如 mvn eclipse:eclipse 就自動從官方下載 jar 到本地,如果不做配置,默認(rèn)本地 repository ${user.home}/.m2/ 。對于 windows xp 來說一般在 C:\Documents and Settings\ username%\.m2 下,其中% username %為操作系統(tǒng)登錄用戶名。這時你可以看到 ${user.home}/.m2/ 下多了個 repository 目錄,里面有很多的項(xiàng)目相關(guān) jar ,目錄按 groupId/ artifactId/version 排好。把 repository 目錄整個拷貝到 apache 服務(wù)器的 maven 目錄下,如果需要官方缺少的 jar 或公司內(nèi)部 jar ,仿照這個目錄結(jié)構(gòu),做好 jar 放到 maven 目錄下。自建私服成功!

    要使用私服,只需修改 pom.xml ,在 repository 配置后加上:

    <repository>

    ????? <id>companyName</id>

    ????? <url>http:// ${ip}/maven</url>

    </repository>

    這樣需要下載 jar 時,會先到本地 repository 查看,沒有下載過再到官方搜索,沒有找到再到后面的 repository 查找。

    3.2?????? 安裝配置

    Maven 的安裝很簡單:

    1.???????? apache 網(wǎng)站上下載 maven 安裝包,實(shí)際上就是個壓縮文件。將其解壓到你想要存放 maven 的目錄中。在這里假設(shè)你將 maven 解壓到 C:\Program Files\Apache Software Foundation\maven-2.0.4 中。

    2. ????? C:\Program Files\Apache Software Foundation\maven-2.0.4\bin 設(shè)到你的系統(tǒng)環(huán)境變量%PATH%中。

    3. ????? 同時確保你已經(jīng)將你的JDK安裝目錄設(shè)為java_home系統(tǒng)變量。

    4.???????? 打開個命令行窗口,運(yùn)行 mvn –version 驗(yàn)證是否安裝成功。

    5.???????? 如果使用 eclipse ,在運(yùn)行 mvn eclipse:eclipse 生成 eclipse 項(xiàng)目文件后,需加入 M2_REPO Classpath Variables 中,指向 本地 repository ,例如: C:/Documents and Settings/Owner/.m2/repository

    3.3?????? 基本使用流程

    在項(xiàng)目進(jìn)程中,不必做什么配置,在 pom.xml 同級目錄, cmd 使用簡單的 maven 命令,就可以完成初始化 -> 開發(fā) -> 測試 -> 發(fā)布 的全過程。 Maven 的基本使用流程如下圖:

    其中在初次使用命令 mvn eclipse:eclipse 時會下載很多的插件和 jar ,可能需要較長的時間,建議泡杯咖啡,和同事吹吹牛。如果失敗,可能是網(wǎng)絡(luò)問題,可以重新運(yùn)行 mvn eclipse:eclipse ,已下載好的插件和 jar 不會再下。運(yùn)行 mvn test mvn package 等命令,產(chǎn)出物都會放在 target 目錄下。如果在使用過程中有什么問題,也可以和我聯(lián)系, mail:pesome@gmail.com ,我們一起來嘗試解決。

    ?

    總結(jié):

    Maven 作為新的項(xiàng)目管理工具,簡單易用,能對項(xiàng)目的各個階段提供大力支持,同時由于它易擴(kuò)展的插件體系架構(gòu),出現(xiàn)了越來越多的插件,也使得其功能更加強(qiáng)大。短短一篇文章,實(shí)在很難把其特點(diǎn)一一盡述, maven 還有很多好用的功能和插件等待我們?nèi)ナ褂煤烷_發(fā)。而學(xué)習(xí)新技術(shù)的最好方式就是實(shí)踐,大家如果有興趣,盡快下載一個最新版,開始你的 maven 之旅吧!

    ?

    作者簡介:張俊,網(wǎng)名 pesome ,上海交大軟件工程碩士, 2 JavaEE 開發(fā)經(jīng)驗(yàn),資歷尚淺。去年下半年開始接觸 spring 等開源軟件,并產(chǎn)生了濃厚的興趣。今年 3 月開始做 www.openfans.net ,用一堆開源軟件搭建而成,希望為中國的開源事業(yè)做出一點(diǎn)貢獻(xiàn)。

    ?

    參考文檔:

    1.?????? http://maven.apache.org 官方網(wǎng)站文檔

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

    posted on 2006-09-22 08:54 OMG 閱讀(699) 評論(0)  編輯  收藏 所屬分類: Ant/Maven

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    IT風(fēng)云人物

    文檔

    朋友

    相冊

    經(jīng)典網(wǎng)站

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲gv白嫩小受在线观看| 最刺激黄a大片免费网站| 亚洲精品mv在线观看| 亚洲欧洲精品成人久久奇米网| 91麻豆最新在线人成免费观看 | 91情侣在线精品国产免费| a毛片在线看片免费| 免费人成再在线观看网站| 亚洲入口无毒网址你懂的| 亚洲AV成人一区二区三区AV| 亚洲国产一区视频| 日本午夜免费福利视频| 猫咪社区免费资源在线观看 | 91精品国产亚洲爽啪在线影院| 亚洲中文字幕久久精品无码APP| 国产在线19禁免费观看| 在线观看免费宅男视频| 无码免费午夜福利片在线| 免费观看激色视频网站(性色)| 91成人免费观看| 十八禁无码免费网站| 久久国产免费一区| 久久九九AV免费精品| 青青青国产手机频在线免费观看| 久久国产美女免费观看精品 | 国产亚洲一区二区手机在线观看 | 九九视频高清视频免费观看| 黄色一级视频免费观看| 曰批免费视频播放在线看片二 | 亚洲男人的天堂在线va拉文 | a一级爱做片免费| jzzjzz免费观看大片免费| 美女的胸又黄又www网站免费| 在线观看亚洲专区| 精品国产亚洲第一区二区三区| 蜜桃传媒一区二区亚洲AV| 青青草97国产精品免费观看| yellow视频免费看| 国内永久免费crm系统z在线| 精品国产一区二区三区免费| 久久午夜羞羞影院免费观看|