的build工具,例如make、gnumake、nmake、jam等,而且這些工具
都非常優(yōu)秀。那我為什么還要給大家介紹Ant這個(gè)新工具呢? 因?yàn)?
Ant是一個(gè)跨平臺(tái)的Build工具。之所以Ant能跨平臺(tái),是因?yàn)锳nt不
再需要你編寫shell命令,Ant的配置文件是基于XML的任務(wù)樹, 能
讓你運(yùn)行各種各樣的任務(wù),任務(wù)的運(yùn)行是由實(shí)現(xiàn)了特定任務(wù)接口的
對(duì)象來完成的。
1 獲得Ant
Binary版:最新的穩(wěn)定版的下載地址是:
http://jakarta.apache.org/builds/ant/release/v1.1/bin。
(現(xiàn)最新已是1.5版)
Source版:最新的源碼穩(wěn)定版下載地址是:
http://jakarta.apache.org/builds/ant/release/v1.1/src/。
如果你想獲得最新的源碼,地址是:
http://jakarta.apache.org/from-cvs/jakarta-ant/
2 系統(tǒng)要求
需要在CLASSPATH中包含與JAXP兼容的XML parser, 才能編譯和使
用Ant。
我給大家推薦一個(gè)XML parser:xerces,下載地址:
http://xml.apache.org/xerces
當(dāng)然,JDK肯定是必需的,并且是1.1或之后版本。
3 編譯Ant
1. 進(jìn)入jakarta-ant目錄
2. 將JDK加入到你的PATH環(huán)境變量中
3. 設(shè)置JAVA_HOME環(huán)境變量,指向你的JDK安裝目錄
4. 運(yùn)行bootstrap.sh角本文件
5. 運(yùn)行以下命令創(chuàng)建Ant的Binary版:
build.sh -Dant.dist.dir=<安裝Ant的目錄> dist
4 安裝Ant
1. 設(shè)置ANT_HOME環(huán)境變量,指向你的Ant目錄
2. 設(shè)置JAVA_HOME環(huán)境變量,指向你的JSK目錄
3. 將ANT_HOME/bin加入PATH環(huán)境變量中
4. 將ant.jar和xerces.jar加入到CLASSPATH環(huán)境變量中
假設(shè)Ant安裝在/usr/local/ant目錄,可通過以下方法進(jìn)行設(shè)置:
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 運(yùn)行ant
運(yùn)行Ant非常簡(jiǎn)單,如果你按照上面描述的方法安裝了ant,只需在命令
行鍵入ant就行了。
當(dāng)你不帶任何參數(shù)運(yùn)行ant時(shí),Ant會(huì)在當(dāng)前目錄找一個(gè)名叫build.xml
的文件。如果找到了,就將該文件作為build配置文件。如果沒找到,
它會(huì)自動(dòng)地查找上級(jí)目錄,一直找到根目錄。也可以通過命令行參數(shù)
-buildfile 來指定其他配置文件,其中,是你要采用的配置文件名。
用一個(gè)HelloWorld例子來簡(jiǎn)單說明一下:
//HelloWorld.java
package com.sharetop.antdemo;
public class HelloWorld {
public static void main( String args[] ) {
System.out.println("Hello world. ");
}
}
要讓Ant編譯這個(gè)文件,首先需要編寫一個(gè)Build配置文件。在一般情況下,這個(gè)文
件被命名為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文件是一個(gè)標(biāo)準(zhǔn)的XML文件,它包含一個(gè)根節(jié)點(diǎn)Project,每個(gè)Project
定義了至少一個(gè)或多個(gè)Target,每個(gè)Target又是一系列Task的集合。
再來看一下這個(gè)文件的內(nèi)容,它描述了以下信息:工程的名字為HelloWorld,工程
有四個(gè)target,分別是init、compil、build和run,缺省是run。compile只有一個(gè)
任務(wù)javac,源文件位于src目錄下,輸出的類文件要放在classes目錄下。build的
任務(wù)是jar,生成的jar文件為hello.jar,它打包時(shí)以classes為根目錄。而run則
是執(zhí)行這個(gè)HelloWorld類,用hello.jar作為classpath。這四個(gè)target之間有一個(gè)
依賴關(guān)系,這種關(guān)系用depends來指定。即如果Target A依賴于Target B,那么在
執(zhí)行Target A之前會(huì)首先執(zhí)行Target B。所以從下面運(yùn)行缺省Target(run)的輸
出看,這四個(gè)Target的執(zhí)行順序是:init→compile→build→run。HelloWorld.
java文件在src\com\sharetop\antdemo子目錄下。
這個(gè)build.xml配置文件開頭定義了3個(gè)屬性,分別指定了源文件輸出路徑、類文件
輸出路徑和生成的Jar文件名,后面對(duì)這些路徑的引用都通過一個(gè)${property
name}來引用。所以,要注意這樣一個(gè)原則“目錄的定義與目錄的引用應(yīng)該分開”
。