該項目的成員小A就是負責檢出代碼、編譯打包,并部署到服務器上的人。除了這個任務之外,他還是該項目的編程人員。在項目進入測試階段后,小A在得到組中別的成員修復了 bug 并且檢入(check in)了代碼的消息后(也有可能是小A自己檢入了代碼),小A首先更新本地的代碼,先在本地做測試,確認修復了 bug 后打成 WAR 包部署到測試服務器上,并通知測試人員已經修復了 bug,讓測試人員繼續進行測試。
小A的煩惱
在該項目中,有一些為測試方便開發而寫的代碼和頁面,比如跳過用戶認證,但是在部署到測試機環境的時候,需要刪除這些代碼和頁面;另外作為一個具有靈活性和擴展性的應用程序,又有一些配置文件,配置文件中的值會根據環境的改變而變動。例如,在項目中使用了 Log4j 記錄日志,需要給 Log4j 指定日志文件的保存路徑,本地程序員開發的時候用的是 Windows 系統,給 Log4j 指定的也是 Windows 的文件系統,在測試階段的時候,需要部署到 linux 系統中,那么日志的保存路徑也需要做相應的改動。部署到測試服務器上的時候,除了 Log4j 需要改之外,還有很多別的配置項目也需要變動,并且分散在各個 package 中。小A的煩惱也隨之而來,每次他在做完本地測之后,就根據測試機的需要逐個找配置文件,更改相應的值,并刪除那些為測試方便寫的代碼和頁面,天天可能根據需要做好幾次這樣的事情,最煩的是他在快做完對測試機環境更改的時候,某開發人員忽然通知小A說:“我又改了一點代碼,剛檢入,你再重打一個包吧。”,小A又不得不從頭開始做新一輪的檢出代碼、本地測試、更改配置文件、刪除不需要的文件、打包部署的工作。另外小A在測試階段的后期被通知要求除了每次生成一個測試環境的 WAR 包外還必須生成一個在產品環境下的 WAR 包,他做的事情就更多了。
從上面的場景可以看出,小A的工作效率低而且輕易出錯,甚至有可能導致整個項目的工作效率低下。其實可以通過 Ant 來幫助小A快速而且有效地完成這個工作。在 Ant 中,根據目標環境的需要,可以把所有要更改的配置文件的項目集中寫到某個配置文件中。這樣根據不同的目標環境得到不同的配置文件,Ant 在編譯包時根據不同的目標環境切換不同的配置文件即可。比如小A現在碰到的有 3 中環境:開發環境、測試環境以及產品環境,根據這三種環境可以生成三個不同的配置文件:develop_deploy.PRoperty、test_deploy. property和prodUCt_deploy. property,當小A想生成不同的包時只需在這三個配置文件之間切換就可以了。
在正式開始編寫腳本之前,我們需要下載安裝相應的軟件。
Eclipse:為了使 Ant 的開發更加簡單,我們選擇了 Eclipse3.1 作為開發環境。當然你可以使用任何你喜歡的文本編輯工具來開發你的 Ant。Eclipse 的最新版本可以在 http://eclipse.org/ 上下載。