1. ANT定義
Ant(Another Neat Tool)是一組Java類別庫與命令列工具,它的建立檔案(build file)是由XML組成,而每一個建立檔案會包含一個計畫(Project)與一個以上的目標(target),在每一個目標內會包含一組要執行的任務(task)。一個Ant建立檔案會由計畫、目標、任務、屬性(properties)、路徑(paths)等相關元素所組成。
2. ANT的組成元素
計畫(Project)
在Ant腳本中是為上層的元素,它有三個選擇性的屬性可以設定,分別name、default、basedir
- name是專案的名稱
- default代表當在專案中不存在任何target時,專案就會直接使用default設置的target
- basedir即buildfile文件所在之根目錄
目標(Target)
每一個專案定義零到多個目標,一個目標也就是一組你想要執行的任務,並且當您要啟動Ant時,可以選擇想要執行的目標只要沒有給定任何目標,專案就會使用預定目標 我們也可以運用if/unless條件式來決定該執行那一個目標,一個目標可以相依於其他目標,也就是需要等被依賴的目標執行完成,該目標才能接續執行。
任務(Tasks)
一個任務是由一個可執行的代碼所組成,它包含了多重屬性。
屬性(Properties)
一個屬性是由一個名稱和一個值組成,名稱以大小寫作為區別,舉例來說,有一個builddir的屬性擁有build值, 而且使用在屬性標籤表示式會是${builddir}/classes,當執行Ant buildfile時會輸出build/classes的結果,一般而言屬性不是變數,通常以字串常數的型態呈現。
- 例子,設置test.dist屬性為"dist"值:
<property name="test.dist" value="dist"/>
路徑(Paths)
路經結構是由classpath、pathelement、fileset、dirset與filelist等元素分別組合而成。
- classpath是類別參考路徑
- pathelement用來指定目錄或jar文檔
- fileset是一群檔案的組合
- dirset是一群目錄的組合
- filelist定義為檔案的集合
<classpath>
<pathelement
path=
"${classpath}"
/>
<fileset
dir=
"lib"
>
<include
name=
"**/*.jar"
/>
</fileset>
<pathelement
location=
"classes"
/>
<dirset
dir=
"${build.dir}"
>
<include
name=
"apps/**/classes"
/>
<exclude
name=
"apps/**/*Test*"
/>
</dirset>
<filelist
refid=
"other_jars"
/>
</classpath>
3.第一支簡單的ANT BUILDFILE文件
首先, 我們必須依據所屬的應用程式專案建立自己的buildfile文件,可以參考以下的範例說明:
<project
name=
"TestProject"
default=
"dist"
basedir=
"."
>
<!--
為
build
文件設定全域性屬性
-->
<property
name=
"src"
location=
"src"
/>
<property
name=
"build"
location=
"build"
/>
<property
name=
"dist"
location=
"dist"
/>
<target
name=
"
init
"
>
<!--
建立
build
的目錄結構
-->
<mkdir
dir=
"${build}"
/>
</target>
<target
name=
"compile"
depends=
"init"
description=
"compile the source "
>
<!--
從
src
目錄編繹
java
代碼
,
且將編譯好的
class
代碼移動到
build
目錄
-->
<javac
srcdir=
"${src}"
destdir=
"${build}"
/>
</target>
<target
name=
"dist"
depends=
"compile"
description=
"generate the distribution"
>
<!--
創建放置
jar
檔目錄
-->
<mkdir
dir=
"${dist}/lib"
/>
<!--
把
build
目錄內的所有檔案結構打包成一個
TestProject.jar
檔
-->
<jar
jarfile=
"${dist}/lib/${ant.project.name}.jar"
basedir=
"${build}"
/>
</target>
<target
name=
"clean"
description=
"clean up"
>
<!--
刪除
build
與
dist
樹狀結構目錄
-->
<delete
dir=
"${build}"
/>
<delete
dir=
"${dist}"
/>
</target>
</project>
在撰寫完成buildfile文件之後,需要 安裝Ant工具或者使用 Eclipse IDE內建的Ant plugin來執行我們剛才所建立的buildfile文件。
Buildfile:
D:\Works\TestProject\TestProject.xml
init
:
[
mkdir
] Created dir: D:\Works\TestProject\build
compile
:
[
javac
] Compiling 1 source file to D:\Works\TestProject\build
dist
:
[
mkdir
] Created dir: D:\Works\TestProject\dist\lib
[
jar
] Building jar: D:\Works\TestProject\dist\lib\TestProject.jar