用Ant編譯Java Web程序

先看一下項目的目錄結構:

source目錄裏放Java源程序,classes目錄裏放編譯好的class文件。這兩個目錄裏的文件都要按包結構組織好。當然,classes目錄也可以不必事先建立,這可以交給Ant去做。以下是我寫的build.xml,放在Hello目錄下:

在Ant的構建文件build.xml中,最重要的是target(目標)。一個build.xml往往包含了多個target,定義了一個軟件項目的構建過程以及每步之間的依賴關係。例如對於這個項目來說,“編譯”必須要在創建完classes目錄後才能進行。此外,在進行編譯時,ant還會比較源文件和對應的class文件的時間戳,以此來判斷源文件在上次編譯後是否被更新,是否需要重新編譯。知道了這些,就可以大體說下各項的含義了。

最外層的project元素定義了項目的名稱(name),默認構建目標(default)和構建的基本目錄(basedir,當前目錄 “.”)。basedir即設定文件中的相對路徑是相對於誰而言的。接下來有一些property元素,你可以把它們當成一些變量的定義,這是爲了接下來引用的方便。

然後定義了三個target元素。第一個target的名字是init。名字的作用是:如果你想執行某個target的任務,只需在命令行下執行 ant 即可。如果省略了,ant會執行在project元素中定義的默認目標。在裏面用mkdir定義了一個任務,即創建classes目錄。這裏引用了剛纔定義的property,注意引用property的寫法:”${dest.dir}”。

第二個是compile目標。depends=”init”說明它依賴於init。即當Ant發現init目錄沒有完成時(classes目錄還沒有創建時),Ant會先執行init目標。compile目標裏面用javac元素描述了編譯任務。srcdir和destdir分別指定了源文件的目錄和編譯後class文件的目錄。儘管因爲包結構的原因,source目錄下還有子目錄,但Ant會把source目錄下的所有Java源文件進行編譯,並且在classes目錄下建立相應的包結構目錄,把所有的class文件放在正確的位置上。所有這一切都只是用這兩個參數來描述的。再往裏是 classpath元素,用來設定編譯時的classpath,以便引用servlet-api.jar和struts庫裏的類。我偷了個懶,把所有的 jar文件都包含進來了。用的是fileset,指定好目錄和要包含的文件名(可以有通配符)就行了。

最後一個target clean是清除編譯生成的文件,用delete元素來完成。這樣當在命令行下執行ant clean後,classes目錄就被刪除了。

把這個build.xml放在項目目錄Hello中,以後只要在Hello目錄下執行ant,就會自動把所有需要編譯的文件編譯好後放在classes目錄裏了,非常方便。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章