simple example build file
description="compile the source " >
description="generate the distribution" >
以上是一個簡單,但已經可以完全說明Ant工作流程的例子,來源于Ant的手冊。在這個例子中,先定義了項目的基本信息和構建過程中所需要使用到的屬性(1),然后初始化環境(2)(創建時戳和目標目錄),在3和4中,對項目進行編譯和打包,在5處,提供了清除項目輸出的途徑。
在Ant中,最關鍵的四個概念就是項目(Project)、目標(Target)、任務(Task)和屬性(Property)。這四個概念的定義和調度、配置文件的處理構成了Ant的核心。而具體的任務則作為擴展機制。這種微核心的處理思路在很多成功的軟件項目中采用過。
本文并沒有打算對Ant進行全面的介紹,因此,如果你打算在組織中引入日構建,那么,學會使用Ant是必須的。目前很多的IDE環境都提供了對Ant的支持(例如Eclipse),所以使用Ant是很方便的。
原則上,光有Ant就已經可以完成一個日構建過程了,但是還有一些軟件提供了更好的封裝,使得持續集成變得更加的簡單。典型的兩個工具是AntHill(http://www.urbancode.com/projects/anthill/default.jsp)和CruiseControl(http://cruisecontrol.sourceforge.net/)。前者是一個商業軟件,提供了很多優秀的日構建實踐。使用起來也很簡單。后者是鼎鼎大名的Martin Folwer所在的ThoughtWorks公司開發的,可以免費使用。
另一個值得關注的軟件是Apcache組織下的Maven項目(http://maven.apache.org/)。這個項目還很年輕,目前才到1.0的發布版。Maven給自己的定位是項目管理軟件,使用項目對象模型(POM)來描述一個項目,進一步的簡化構建過程,并統一構建過程所出產的工件。Maven的另一個目標是通過一種實際的工具,來推廣優秀的實踐。例如開發目錄樹的組織。
日構建的代價
雖然日構建有諸多的好處,但是要使用日構建并不是一帆風順的。最大的問題是如何引入日構建的三項基本實踐。前兩項相對簡單,最難的是建立自動化測試。關于這部分的說明請參考測試驅動開發的相關部分。
日構建擴展任務
日構建的核心任務是編譯、構建、執行測試和發布。除了這些任務之外,還可以微日構建添加擴展任務。
生成文檔。生成文檔有很多的方法,其中最關鍵的是生成API文檔。JavaDoc的概念減弱了傳統軟件開發中文檔的重要性,而把大量的文檔嵌入到了代碼層面中。除了標準的JavaDoc文檔之外,還可以利用第三方的工具生成自定義的文檔,例如to-do列表文檔。XDoclet就是其中的一個工具。
預編譯。不少的應用引入了預編譯。典型的如AspectJ,作為一個AOP工具,AspectJ的作用是使用特定的代碼生成器生成AOP的Java代碼,然后再進行編譯。將預編譯的工作納入到構建過程,可以簡化開發的工作量。典型的還包括一些ORM工具。
代碼分析。代碼分析是軟件度量的重要工作。代碼分析可以為管理人員提供一個判斷代碼質量依據(不要把它作為唯一的標準)。代碼分析是形式化的,因此可以制作成軟件,集成到構建過程中來。例如,判斷代碼是否符合編碼規范,文檔和代碼的比率,包和類涉及的合理性。
測試覆蓋分析。測試覆蓋分析作為輔助測試的手段是非常重要的。測試代碼的復審,最關鍵的評價測試是否足夠(相對),單靠人工完成這項工作太勉強了。所以應該令其自動化,并成為構建過程的一部分。
問題跟蹤。測試過程中出現的問題應該被納入到一個問題跟蹤系統中,可以通過和問題跟蹤系統接口來設計自動化的任務。
歸檔和備份。這是很基本,但也是很重要的功能。每天產生的工件應當進行妥當的歸檔、備份。
進一步了解
試圖在短短的一篇文章中完整介紹日構建技術是很難的,從DW的網站上,你可以找到更多管理日構建工具的相關內容。
關于作者
林星,致力于研究敏捷理論和優秀的軟件設計思想,并將之應用于國內的軟件組織?梢酝ㄟ^ iamlinx@21cn.com 和他聯系,也可以通過訪問 http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-frmwk/www.qca.cn 和 http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-frmwk/www.aglichina.org 來獲得更多的信息。
文章來源于領測軟件測試網 http://www.kjueaiud.com/