從JBoss的服務(wù)器中獲得源碼的細(xì)節(jié)
第一步,連接到JBoss服務(wù)器
我采用的是MyEclipse6,SVN的Eclipse插件,直接解壓到MyEclipse的eclipse目錄下即可,打開(kāi)MyEclipse后,即可在window->show view->other中打開(kāi)svn repository的窗口,在其中new一個(gè)svn repository,這個(gè)是公共的匿名服務(wù)器,每五分鐘自動(dòng)與JBoss服務(wù)器同步一次
PS:這個(gè)網(wǎng)址可以用瀏覽器直接訪問(wèn),就好像上ftp一樣,非常方便,也是SVN優(yōu)于CVS的一方面
第二步,下載相應(yīng)的JBoss源碼
仔細(xì)看看JBoss服務(wù)器的目錄就會(huì)發(fā)現(xiàn)JBoss源碼數(shù)量之巨讓人乍舌,不過(guò)在這里我只下載JBoss,因?yàn)楫?dāng)前市面上能買(mǎi)到的中文資料書(shū),最新也就4.x,大部分也是發(fā)布到網(wǎng)上的正式版,可以選擇一個(gè)版本下載,然后運(yùn)行build/build.bat 文件,自動(dòng)完成編譯構(gòu)建工作,如果要最新的JBoss源碼,這個(gè)目錄下就是JBoss所有模塊的源代碼了,你可以選擇直接 check out 整個(gè)Branch_4_0目錄,那樣就得到全套JBoss4.0的JBoss源碼了,然后運(yùn)行 build/build.bat 即可,ant會(huì)自動(dòng)完成編譯、打包生成二進(jìn)制代碼的工作。(但在我的機(jī)子上會(huì)構(gòu)建失敗,不知是JBoss源碼還是配置的問(wèn)題)不過(guò)我們這里的目的不是獲得JBoss 的可執(zhí)行jar(官方網(wǎng)站可以直接下載release版本),也沒(méi)有高級(jí)到修改JBossJBoss源碼的地步,所以我只下載兩個(gè)核心模塊:system和jmx 。其中,system是引導(dǎo)JBoss啟動(dòng)并且載入核心模塊的模塊,而jmx則是JBoss核心的運(yùn)行模塊(我們都知道JBoss是完全基于JMX實(shí)現(xiàn)的)。簡(jiǎn)單的研究一下而已。
細(xì)心觀察各個(gè)模塊可以發(fā)現(xiàn),每個(gè)模塊下都有一個(gè).project文件,顯然每個(gè)模塊都是一個(gè)eclipse的project,所以單純把全部模塊check out到一個(gè)項(xiàng)目Branch_4_0是不行的,為什么呢:首先是下回來(lái)直接構(gòu)建會(huì)沒(méi)反應(yīng),因?yàn)閑clipse默認(rèn)把工程目錄下的src作為JBoss源碼目錄,其他目錄中的JBoss源碼是不會(huì)被編譯的,雖然可以手動(dòng)添加更多的src目錄,但那樣會(huì)累死。更何況,下載和構(gòu)建那么多源文件也會(huì)讓你的硬盤(pán)崩潰的,我是被那種磁頭反復(fù)讀寫(xiě)的噪聲折磨了不止一個(gè)小時(shí),連最后刪除時(shí)系統(tǒng)也卡死在那里,很郁悶
言歸正傳,我先直接在jmx和system模塊上右鍵“check out”,把它們簽出為兩個(gè)獨(dú)立的Java project。但是你會(huì)不爽地發(fā)現(xiàn)兩個(gè)項(xiàng)目都出現(xiàn)了紅叉,提示幾類錯(cuò)誤:一是找不到一堆庫(kù)文件,二是ant的構(gòu)建文件缺這缺那的,煩死,三是 system模塊還需要test模塊的支持。
下面,以system模塊的解決方法為例,其他模塊同理可解
首先,我們的目的是讓這個(gè)項(xiàng)目能夠構(gòu)建通過(guò),從而將來(lái)看源代碼時(shí)可以充分利用IDE的輔助功能,那么上述第二類錯(cuò)誤是無(wú)關(guān)緊要的,因?yàn)闀簳r(shí)不需要用ant構(gòu)建。
然后,第三個(gè)錯(cuò)誤,我們可以在system項(xiàng)目的build path中發(fā)現(xiàn),需要關(guān)聯(lián)jmx模塊和test模塊,所以只需再把test模塊check out回來(lái)即可。不過(guò)test模塊同樣會(huì)提示缺少一些庫(kù)文件。
最后,我們?cè)赽uild path中查看一下那些庫(kù)文件到底什么來(lái)頭??梢园l(fā)現(xiàn)他們都形如 “/thirdparty/apache/log4j”之類的,而SVN上面正好有一個(gè)“thirdparty”模塊,check out回來(lái)看看——里面什么都沒(méi)有,就一個(gè)README,里面寫(xiě)道“/thirdparty 目錄的內(nèi)容是由ant在構(gòu)建過(guò)程中生成的,所以這個(gè)目錄現(xiàn)在為空”。怎么辦呢,難道要自己去找那些jar庫(kù)文件(也不是不行,因?yàn)橛玫降膉ar都是比較有名的開(kāi)源工具包),研究了一下那些ant構(gòu)建文件,太多太繁瑣,自己又對(duì)ant不熟,無(wú)果而終。有經(jīng)驗(yàn)的朋友可以下載build模塊,看看里面那一堆 build XXX.xml 文件
不甘心地在SVN中繼續(xù)搜索,在 Branch_4_0/thirdparty/ 中就有我們所需的全部jar,可以按需下載。只是下回來(lái)的jar所在的目錄結(jié)構(gòu)跟模塊的build path 不一致,譬如:實(shí)際jar目錄為“apache\log4j\lib\log4j.jar”,而build path中為“apache-log4j\log4j.jar”,所以,最后還是要自己一個(gè)個(gè)手工重新指定路徑,最起碼也要修改其中的classpath
終于,修復(fù)完錯(cuò)誤了,可以在 project->build project 嘗試編譯一下,成功后,在源代碼中就可以進(jìn)行高亮語(yǔ)法顯示、按住ctrl跟蹤源代碼等高級(jí)功能了。最起碼,不會(huì)再有一堆紅色叉叉影響我們看代碼的心情了
【編輯推薦】