rocker81317 寫:
所以我把它列出來後,並觀察程式碼,查了資料,也看了您敘述前一個我問的問題。我發現build.xml這檔案如您所說的的確是更新關鍵,但是我還是不知道,每個資料夾形成的用意? 不知道能不能指導一下?
此外,因為我想做出Reverse Index,您叫我上網查看其他人的做法,看了覺得更是奇怪,因為我發現有人實作的都只有5個檔案,InvertedIndexMapper、InvertedIndexReducer、AppTest.java、InvertedIndexTest.java以及InvertedIndexJob,也就是看得出來只有5個檔案就完成,又或者是3個檔案就完成。所以這就讓我更不知道,上次Jazz您給我JobClient_Testest的檔案內容,為什麼會有那些那麼多檔案存在的用途與意義的說。
簡單回覆
1. 要下 ant 的基本需求是執行目錄(working directory, 下 pwd 的結果)中,有 build.xml
2. bin 與 doc 兩個目錄是「輸出」。是下完 ant 之後產生的。
bin 是根據 build.xml 產生的所有 java class 檔。
doc 目錄是根據 build.xml 產生的 java doc
3. 我寫的 build.xml 的輸入是 src 目錄,
src 目錄中的所有 *.java 程式碼都會使用 javac 搭配指定的 CLASSPATH 去進行編譯,
所以即便你要改寫 Reverse Index,也只需要把所有 java 原始碼放在 src 目錄中,就可以下 ant 編譯成 output.jar
4. Reverse Index 需要改變的是 hadoop-examples-*.jar,而我原本 build.xml 去更新(patch)的是 hadoop-core-*.jar
所以需要改 build.xml 裏面的字串。
--------------------------------------
至於 build.xml 到底在寫什麼,建議去
http://ant.apache.org 找資料。
有興趣深入研究 看「 Ant: The Definitive Guide 」,
http://shop.oreilly.com/product/9780596001841.do我自己是看
http://ant.apache.org/manual/index.html 學的,沒看書。
因為我以前用過 C 的 make (make 的輸入是 Makefile)
所以我可以很容易地對應 make 的概念到 ant
但很顯然不是每個人都有這些經驗,
所以以往為了降低大家的門檻,我只會說:請把原始碼放在 src 目錄底下,然後下 ant 就對了。
有太多東西是背景知識,你們也許用過 Visual Studio 這種開發介面,實際上它是可以產生 Makefile 給 C 的程式
Eclipse 也一樣可以產生 Ant 用的 build.xml,也可以從 build.xml 直接匯入到 Eclipse
這些都是用 Google 找來的技巧,
http://orshalic.wikispaces.com/Import+an+Ant+project+into+Eclipse分享我自己的程式學習過程,我一樣剛開始學程式都希望用 GUI 介面
大一學 VB
大二學 C/C++ 的時候,就想用 Visual Studio
大三學 Java 的時候用過 Netbean 跟 Visual J
但老師都只教我們要下指令(我是電機控制系的),
因為 GUI 太難一步一步教,太難控制每個人的操作行為。指令卻可以。
大三修專題,接觸 Unix 一開始不習慣,到了研一去修 Unix Network Programming 開始用 Linux
接下來就一整個全部改用 command line 了。
至今我已經離開學校十年了,也就是離我學習 make 的時間,至少有十年了。
我學習 Java 也已經是十四年以上的時間,學習 Hadoop 也已經5年了,
所以很多時候,我是無法體會或者已經淡忘「初學者」的痛苦了。
基於分享的熱情,持續不斷地,我在這個論壇耕耘。
但學習這種事情,很多時候「共同學習的夥伴」是很重要的。
你遇到的痛苦,網路上的人不見得有辦法完全理解,但你的夥伴會懂你。
所以多找些人變成你的夥伴吧(好像海賊王的台詞喔)
我儘量耐住性子回答這些問題,若有不清楚,就放膽問吧~
但也請把你的心靈準備好,有些回答不一定會讓你覺得舒服,
但別太容易受傷,因為溝通都跟個人經驗有很大的關聯。
- Jazz