Java的Build工具—Ant應用指南(1)
本文以最新發行的Ant 1.5.1為例,介紹這款優秀的Build工具的安裝配置、基本應用和一些進階話題。最新的Ant是 http://jakarta.apache.org/ant/ 。
Ant是一種基於Java的Build工具。理論上來說,它有些類似於C中的make,但比make優越。現在存在的大多數Build工具,如make、gnumake、nmake、jam等都存在這樣或那樣的不足,比如依賴於特定的平台、設定檔過於複雜或者對格式無法檢查而容易出錯等。與這些工具相比較,Ant的兩個特性決定了它是一款優秀的Build工具:
1. 基於Java的實現。具有良好的跨平台性,同時可以通過增加新的Java類來擴充Ant的功能,而無需去瞭解不同平台上不同的指令碼語言。
2.基於XML的設定檔。Ant以XML樹來描述Target/Task的關係,檔案結構清晰、易讀易寫,並且利用XML對格式的控制來避免由於設定檔的錯誤造成的Build操作失敗。
安裝與配置
Ant的安裝非常簡單,把從網上下載的jakarta-ant-1.5.1-bin.zip解開到一個目錄下即可(以下假定安裝在目錄D:/jakarta-ant-1.5.1)。接下來需要進行環境變數配置:
SET ANT_HOME=D:/jakarta-ant-1.5.1 //注意是Ant的安裝目錄,不是bin子目錄 SET PATH=%PATH%;%ANT_HOME%/bin; |
在配置環境變數之前,請確認已經正確設定了JAVA_HOME系統變數。輸入ant命令,看到如下輸出說明已成功安裝了Ant工具:
Buildfile: build.xml does not exist! Build failed |
提示資訊表明在目前的目錄不存在build.xml設定檔,但這本身已經說明Ant成功運行了。
快速入門
下面用一個最簡單也是最經典的例子-HelloWorld來感受一下Ant吧。
//HelloWorld.java package com.sharetop.antdemo; public class HelloWorld { public static void main( String args[] ) { System.out.println("Hello world. "); } } |
要讓Ant編譯這個檔案,首先需要編寫一個Build設定檔。在一般情況下,這個檔案被命名為build.xml。
<?xml version="1.0" encoding="UTF-8" ?> <project name="HelloWorld" default="run" basedir="." > <property name="src" value="src"/> <property name="dest" value="classes"/> <property name="hello_jar" value="hello.jar" /> <target name="init"> <mkdir dir="${dest}"/> </target> <target name="compile" depends="init"> <javac srcdir="${src}" destdir="${dest}"/> </target> <target name="build" depends="compile"> <jar jarfile="${hello_jar}" basedir="${dest}"/> </target> <target name="run" depends="build"> <java classname="com.sharetop.antdemo.HelloWorld" classpath="${hello_jar}"/> </target> </project> |
來看一下這個檔案的內容,它描述了以下資訊:工程的名字為HelloWorld,工程有四個target,分別是init、compil、build和run,預設是run。compile只有一個任務javac,源檔案位於src目錄下,輸出的類檔案要放在classes目錄下。build的任務是jar,產生的jar檔案為hello.jar,它打包時以classes為根目錄。而run則是執行這個HelloWorld類,用hello.jar作為classpath。這四個target之間有一個依賴關係,這種關係用depends來指定。即如果Target A依賴於Target B,那麼在執行Target A之前會首先執行Target B。所以從下面運行預設Target(run)的輸出看,這四個Target的執行順序是:init→compile→build→run。檔案目錄結構1所示。HelloWorld.java檔案在src/com/sharetop/antdemo子目錄下。
圖1 ant_demo應用的目錄結構
在命令列輸入命令:ant,然後運行,可以看到如下輸出:
如果設定檔名不是build.xml,比如是build_front.xml,那麼,可以使用-buildfile命令參數指定:
G:/myDoc/ant_demo>ant -buildfile build_front.xml |
也可以單獨執行指定的某個target,比如,只編譯不打包執行,可以使用下面輸入命令即可:
G:/myDoc/ant_demo>ant compile |
在相應的目錄下會找到編譯出的HelloWorld.class檔案。
再看看上面的build.xml設定檔,檔案開頭定義了3個屬性,分別指定了源檔案輸出路徑、類檔案輸出路徑和產生的Jar檔案名稱,後面對這些路徑的引用都通過一個${property name}來引用。所以,要注意這樣一個原則“目錄的定義與目錄的引用應該分開”。 (未完待續)