的build工具,例如make、gnumake、nmake、jam等,而且這些工具
都非常優秀。那我為什么還要給大家介紹Ant這個新工具呢? 因為
Ant是一個跨平臺的Build工具。之所以Ant能跨平臺,是因為Ant不
再需要你編寫shell命令,Ant的配置文件是基于XML的任務樹, 能
讓你運行各種各樣的任務,任務的運行是由實現了特定任務接口的
對象來完成的。
1 獲得Ant
Binary版:最新的穩定版的下載地址是:
http://jakarta.apache.org/builds/ant/release/v1.1/bin?!?
(現最新已是1.5版)
Source版:最新的源碼穩定版下載地址是:
http://jakarta.apache.org/builds/ant/release/v1.1/src/。
如果你想獲得最新的源碼,地址是:
http://jakarta.apache.org/from-cvs/jakarta-ant/
2 系統要求
需要在CLASSPATH中包含與JAXP兼容的XML parser, 才能編譯和使
用Ant?!?
我給大家推薦一個XML parser:xerces,下載地址:
http://xml.apache.org/xerces
當然,JDK肯定是必需的,并且是1.1或之后版本?!?
3 編譯Ant
1. 進入jakarta-ant目錄
2. 將JDK加入到你的PATH環境變量中
3. 設置JAVA_HOME環境變量,指向你的JDK安裝目錄
4. 運行bootstrap.sh角本文件
5. 運行以下命令創建Ant的Binary版:
build.sh -Dant.dist.dir=<安裝Ant的目錄> dist
4 安裝Ant
1. 設置ANT_HOME環境變量,指向你的Ant目錄
2. 設置JAVA_HOME環境變量,指向你的JSK目錄
3. 將ANT_HOME/bin加入PATH環境變量中
4. 將ant.jar和xerces.jar加入到CLASSPATH環境變量中
假設Ant安裝在/usr/local/ant目錄,可通過以下方法進行設置:
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.2.2
export PATH=${ANT_HOME}/bin

export CLASSPATH=${ANT_HOME}/lib/ant.jar:/lib/xerces.jar:
${CLASSPATH}
5 運行ant
運行Ant非常簡單,如果你按照上面描述的方法安裝了ant,只需在命令
行鍵入ant就行了?!?
當你不帶任何參數運行ant時,Ant會在當前目錄找一個名叫build.xml
的文件。如果找到了,就將該文件作為build配置文件。如果沒找到,
它會自動地查找上級目錄,一直找到根目錄。也可以通過命令行參數
-buildfile 來指定其他配置文件,其中,是你要采用的配置文件名。
用一個HelloWorld例子來簡單說明一下:
//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>
Ant的Build文件是一個標準的XML文件,它包含一個根節點Project,每個Project
定義了至少一個或多個Target,每個Target又是一系列Task的集合。
再來看一下這個文件的內容,它描述了以下信息:工程的名字為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。HelloWorld.
java文件在src\com\sharetop\antdemo子目錄下。
這個build.xml配置文件開頭定義了3個屬性,分別指定了源文件輸出路徑、類文件
輸出路徑和生成的Jar文件名,后面對這些路徑的引用都通過一個${property
name}來引用。所以,要注意這樣一個原則“目錄的定義與目錄的引用應該分開”
。