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