小石頭
          Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.
          posts - 91,comments - 22,trackbacks - 0

          轉(zhuǎn) :http://cc.msnscache.com/cache.aspx?q=5879089626553&lang=zh-CN&mkt=zh-CN&FORM=CVRE3
          一直以來(lái),沉浸的ant的成就中,我也沒(méi)有對(duì)項(xiàng)目資源的管理提出更高的要求,也許本身也是項(xiàng)目接觸的原因。罱捎詮駒謐蚴褂胮ortal技術(shù),而且是用開(kāi)源的jetspeed.我當(dāng)時(shí)聽(tīng)了一大跳,說(shuō)那么大的企業(yè)級(jí)應(yīng)用怎么能這么草率的選擇開(kāi)源的東西(雖然我對(duì)開(kāi)源這東西很喜歡)。沒(méi)有辦法了,領(lǐng)導(dǎo)命令下來(lái),做兵的只能埋頭苦干了。一開(kāi)始碰到的是項(xiàng)目的編譯問(wèn)題。說(shuō)jetspeed是基于maven描述的


          ?? 暈~!maven是什么東西,看來(lái)真的是孤陋寡聞了。以前一直是eclipse的平臺(tái)下開(kāi)發(fā),加上ant工具,對(duì)項(xiàng)目的創(chuàng)建,開(kāi)發(fā),發(fā)布,文檔生成都很方便。第一次聽(tīng)到這東西很納悶,心里罵到,這群人是不是吃了沒(méi)事干啊。可是罵歸罵,事情還得做。老方法,第一步google,第二步找到官方站點(diǎn)。我才奇怪,apache每天都上怎么就沒(méi)有注意的這東東呢。咳,看來(lái)rimen我真的很懶了,懶得連舉手之勞的事情都不做了~。言歸正傳,從實(shí)際的項(xiàng)目出發(fā)。我的目的很簡(jiǎn)單,就是能夠建立jetspeed項(xiàng)目,能夠讓他在eclipse進(jìn)行開(kāi)發(fā)。在我心里就有了如下的問(wèn)題:
          ?1.maven是什么東西
          ?2.maven和ant由什么區(qū)別,maven和現(xiàn)有的IDE工具有什么關(guān)系
          ?3.maven的主要過(guò)程和原理
          ?4.怎么利用maven進(jìn)行項(xiàng)目的開(kāi)發(fā)和管理
          ?經(jīng)過(guò)一天的努力,查詢(xún)了一些相關(guān)的資料,發(fā)現(xiàn)有價(jià)值的中文資料不多,最全的還是apache上的doc文檔。不過(guò)都是老外的文字,要知道我最痛恨的就是那些僅有線條沒(méi)有寓意的文字了。不過(guò)為了工作也為了自己,咳,沒(méi)有辦法了,重洋眉外一下了,大家不要罵我^_^。但是這里還是推薦一篇對(duì)初學(xué)者比較有價(jià)值的文章,matrix上的:http://www.matrix.org.cn/resource/article/43/43661_Maven.html 也是從英文翻譯過(guò)來(lái)的,咳,國(guó)人啊,加油啊~!
          ?開(kāi)始解開(kāi)那幾個(gè)問(wèn)題了.
          ?第一個(gè)問(wèn)題很簡(jiǎn)單,它就是一個(gè)工具,僅僅是一個(gè)工具,至于什么工具下面問(wèn)題就可以體現(xiàn)了。它的原始想法就是為了簡(jiǎn)化jakarta螺旋式項(xiàng)目的構(gòu)建,解決項(xiàng)目之間jar依賴(lài)的共享。往往偉大的發(fā)明都是來(lái)自于解決某些人的懶惰,看當(dāng)初java就是,服了那些老外了,什么都想的出,我也很懶,我也發(fā)現(xiàn)在eclipse開(kāi)發(fā)多個(gè)項(xiàng)目的時(shí)候管理jar之間的版本很麻煩,可是我就想不出這個(gè)東西,任命了。
          ?我相信大家只要開(kāi)發(fā)過(guò)java程序的人,或多或少都會(huì)接觸到ant的東東,怎么說(shuō)呢,ant其實(shí)只能說(shuō)一個(gè)腳本解析器,它對(duì)任務(wù)的處理還得依賴(lài)于外部的工具。這就不得不想到makefile這東西了,在以前開(kāi)發(fā)c程序的時(shí)候,為了管理c項(xiàng)目的各種資源包括原文件和類(lèi)庫(kù),對(duì)編譯工具提供了一個(gè)make工具。我個(gè)人覺(jué)得ant就是make的java版本,錯(cuò)了莫怪。至于maven,那可不是一言?xún)烧Z(yǔ)可以概括的。不過(guò)我們可以重程序和源碼中抽身出來(lái),想象自己是個(gè)pm或者一個(gè)architecture來(lái)觀察一個(gè)項(xiàng)目或一個(gè)軟件產(chǎn)品。它提供很多的基礎(chǔ)構(gòu)件,特別是對(duì)j2ee系統(tǒng),每個(gè)組件都可以看成一個(gè)宏觀上的資源。我們從軟件工廠的角度出發(fā),它里面保護(hù)了機(jī)器設(shè)備(external jars,tools,plugins ),生產(chǎn)原料(jar,src,config file,databse),產(chǎn)品(ear,war,jar,doc,config file 等)。下面我們要管理這些東西,叫一個(gè)人(老總)取管理,我看他在高的工資也不會(huì)干,因?yàn)樗厘X(qián)有命賺沒(méi)命花,同時(shí)也為了考慮可發(fā)展道路,他不會(huì)這么干的。所以在maven中引入了plugin的概念。這個(gè)plugin管理的東西是上面的說(shuō)的構(gòu)件,這樣我們必須就有一東西來(lái)記錄這些東西,不然它怎么知道這是不是它的管轄范圍,這就是通過(guò)project.xml文件進(jìn)行定義,它是基于pom元數(shù)據(jù)結(jié)合x(chóng)ml技術(shù)進(jìn)行描述。當(dāng)然有了被管理的對(duì)象,工廠必須有其業(yè)務(wù)規(guī)則,不然它也運(yùn)作不起來(lái),這就是通過(guò)plugin.jelly進(jìn)行定義,利用jelly腳步語(yǔ)言進(jìn)行構(gòu)建每一個(gè)管理的目標(biāo)。這樣老總一句話(maven命令),加上目標(biāo)名,他就會(huì)找到相應(yīng)的plugin進(jìn)行根據(jù)它定義的規(guī)則進(jìn)行處理。這僅僅是從宏觀上的描述,真的的原理還必須參考相關(guān)的文檔進(jìn)行。這里面提出幾個(gè)概念大家可以注意一下,maven plugin,jelly腳本,pom元數(shù)據(jù),軟件工廠等。還有一點(diǎn)就是和目前流行的IDE工具例如eclipse,instillj,jbuider,netbeans IDE 等工具的關(guān)系。以eclipse為例,嚴(yán)格來(lái)說(shuō)maven和eclipse應(yīng)該是風(fēng)馬牛不相及的東西,如果硬要把這個(gè)兩個(gè)東西來(lái)過(guò)來(lái)說(shuō)的話,那也只是人為強(qiáng)加的因素。但是可以肯定的作為常用的軟件,如果說(shuō)maven創(chuàng)建的項(xiàng)目,如果不能在eclipse中開(kāi)發(fā),這可能就失去了這些工具的原來(lái)意義,這也許就是他們之間的唯一聯(lián)系。首先maven和eclipse對(duì)象項(xiàng)目資源描述元數(shù)據(jù)都是不同的,當(dāng)然現(xiàn)在有mavenide(maven workshop)等工具來(lái)保證這些元數(shù)據(jù)之間的轉(zhuǎn)換和同步。其次eclispe和maven之間的功能和職責(zé)不同,maven基本上不用來(lái)進(jìn)行源碼的開(kāi)發(fā),這樣用eclipse和maven結(jié)合來(lái)開(kāi)發(fā)確實(shí)可以減少很多工作量。
          ?3.maven的主要原理我想沒(méi)有比它doc上將的清楚。我想說(shuō)的就一點(diǎn),一開(kāi)始我總用ant的觀點(diǎn)去理解它,總覺(jué)得少了很多東西。其實(shí)maven最大的成功在于簡(jiǎn)化了面向過(guò)程的任務(wù)管理。你知道定義資源,maven用基于插件的目標(biāo)方式來(lái)完成構(gòu)建。當(dāng)然你也可以想ant一樣定義自己特殊的目標(biāo),你也可以把自己項(xiàng)目的目標(biāo)制作成通用的插件。
          ?4.maven的項(xiàng)目開(kāi)發(fā),通過(guò)默認(rèn)的模板新建一個(gè)maven項(xiàng)目.它會(huì)生成項(xiàng)目的各種資源和目錄,例如src,conf等.然后你可以通過(guò)maven的IDE插件生成相應(yīng)的IDE項(xiàng)目,例如maven eclipse.
          ??????? 其實(shí)我也只是用它來(lái)編譯jetspeed.目前越來(lái)越多的項(xiàng)目基于maven的方式發(fā)布,我們可以通過(guò)maven的插件把它轉(zhuǎn)換成自己適應(yīng)的IDE項(xiàng)目進(jìn)行開(kāi)發(fā).基于它對(duì)項(xiàng)目管理強(qiáng)大功能,對(duì)資源和項(xiàng)目版本管理的統(tǒng)一性,我相信會(huì)有越來(lái)越多人會(huì)選擇它來(lái)做項(xiàng)目管理工具,特別是團(tuán)隊(duì)開(kāi)發(fā).

          posted on 2007-02-12 12:18 小石頭 閱讀(389) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): maven、ant
          主站蜘蛛池模板: 丽水市| 漾濞| 黄浦区| 本溪| 碌曲县| 五常市| 凌云县| 迁西县| 兴山县| 泽州县| 龙泉市| 依安县| 临邑县| 新乡县| 合江县| 青岛市| 吴川市| 姜堰市| 沧州市| 银川市| 广宗县| 洛隆县| 革吉县| 泸溪县| 永泰县| 黄龙县| 界首市| 凤冈县| 抚松县| 思南县| 如东县| 增城市| 比如县| 汉沽区| 连城县| 康马县| 历史| 南宫市| 浏阳市| 东方市| 黔西县|