作者: Eric M. Burke, coauthor of java Extreme PRogramming Cookbook
原文:http://www.onjava.com/pub/a/onjava/2003/12/17/ant_bestpractices.Html
譯者:stonexu
QQ:19722707
MSN:xt121@hotmail.com
在ANT出現之前,編譯和部署Java應用需要使用包括特定平臺的腳本、Make文件、不同的IDE以及手工操作等組成的大雜燴。現在,幾乎所有的開源Java項目都在使用Ant,許多公司的開發項目也在使用Ant。Ant的大量使用,也自然帶來了對總結Ant最佳實踐的迫切需求。
本文總結了我喜好的Ant最佳實踐,很多是從親身經歷的項目錯誤,或從其他開發者的“恐怖”故事中得到的靈感的。比如,有人告訴我有個項目將XDoclet 生成的代碼放入鎖定文件的版本控制工具中。單開發者修改源代碼時,他必須記住手工檢出(Check out)并鎖定所有將要重生成的文件。然后,手工運行代碼生成器,當他能夠讓Ant編譯代碼時,這一方法還存在一些問題:
生成的代碼無法存儲在版本控制系統中
Ant(本案例中是Xdoclet)應該自動確定下一次構建涉及的源文件,而不應由程序員人工確定。
Ant的構建文件應該定義好正確的任務依靠關系,這樣程序員不必按照特定順序調用任務。
當我開始一個新項目時,我首先編寫Ant構建文件。文件定義構建的過程,并為團隊中的每個程序員都使用。
本文所有的最佳實踐假設Ant構建文件是一個必須精心編寫的重要文件,它應在版本控制系統中得 到維護,并定期進行重構。下面是我的十五大Ant最佳實踐。
1. 采用一致的編碼規范
Ant用戶不管是喜歡還是痛恨xml構建文件的語法,都愿意跳進這一迷人的爭論中。讓我們先看一些保持XML構建文件簡潔的方法。
首先,也是最重要的,化費時間格式化你的XML讓它看上去很清楚。不過XML是否美觀,Ant都可以工作。但是丑陋的XML很難讀懂。倘若你在任務之間留出空行,有規則的縮進,每行文字不超過90列,那么XML令人驚奇的易讀。再加上好的編輯器或IDE高亮相應的語句,你就不會有如何閱讀的麻煩。
同樣,精選有意義明確、輕易讀懂的詞匯來命名任務和屬性。比如,dir.reports就比rpts好。并不需要特定的編碼規范,只要有一種規范并堅持使用就好。
2. 將build.xml 放在項目根目錄中
Ant構建文件build.xml可以放在如何位置,但是放在項目頂層目錄中可以保持項目簡潔。這是最普遍的規范,使開發者能夠在根目錄找到它。同時,也能夠輕易了解項目中不同目錄之間的邏輯關系。以下是一個典型的項目層次:
[root dir]
build.xml
+--src
+--lib (包含第三方 JAR包)
+--build (由 build任務生成)
+--dist (由 build任務生成)
當build.xml在頂級目錄時,倘若你在項目某個子目錄中,只要輸入:ant -find compile 命令,不需要改變工作目錄就能夠以命令行方式編譯代碼。參數-find告訴Ant尋找存在于上級目錄中的build.xml并執行。
3. 使用單一構建文件
有人喜歡將一個大項目分解到幾個小的構建文件,每個構建文件分擔整個構建過程的一小部分工作。但是應該熟悉到,將構建文件分割會增加對整個構建過程的理解難度。要注重在單一構建文件能夠清楚表現構建層次的情況下,不要過工程化(over-engineer)。
即使你把項目劃分為多個構建文件,也應使程序員能夠在項目根目錄下找到核心build.xml。盡管該文件只是將實際構建工作委派給下級構建文件,也應保證該文件可用。
4. 提供良好的幫助說明
應盡量使構建文件自文檔化。增加任務描述是最簡單的方法。當你輸入ant -projecthelp時,你就可以看到帶有描述的任務清單。比如,你可以這樣定義任務:
新聞熱點
疑難解答