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