Apache Ant 入門完整教學指南。本站提醒廣大學習愛好者:此文章僅供參考,不一定能完全符合您的需求。以下是完整教學正文
1、概述
Ant 是一個將軟體編譯、測試、部署等步驟串聯在一起並自動化的工具,大多用於 Java 環境中的軟體開發。在實際軟體開發中,有許多地方可以用到 Ant。
開發環境:
System:Windows
JDK:1.6+
IDE:Eclipse
Ant:1.9.1
2、優點
Ant 是 Apache 軟體基金會 JAKARTA 專案中的一個子專案,它有以下優點:
1、跨平台性:Ant 是純 Java 撰寫的,所以具有很好的跨平台性。
2、操作簡單:Ant 由內建任務和可選任務組成,用 Ant 任務就像在 DOS 中寫指令一樣。Ant 執行時需要一個 XML 檔案(建置檔案)。Ant 透過呼叫 target 樹,就可以執行各種 task。每一個 task 實作了特定介面物件。
3、維護簡單、可讀性好、整合簡單:因為 Ant 建置檔案是 XML 格式的檔案,所以很容易維護和撰寫,結構很清晰。Ant 可以整合到開發環境中。因為 Ant 的跨平台性和操作簡單的特性,它很容易整合到一些開發環境中去。
3、安裝與設定
1、下載 Ant:https://mirror.esocc.com/apache//ant/binaries/apache-ant-1.9.1-bin.zip
2、解壓縮 zip 壓縮包,放置到你要放置的目錄。我這裡放在 D:\apache-ant-1.9.1,目錄結構如下:
bin 是 Ant 程式執行入口,如果沒有設定 ANT_HOME 的情況下,可以透過 bin 目錄中的 bat 程式執行 build 任務。
etc 目錄存放一些 xsl 輸出模板。
lib 目錄存放 Ant 程式需要依賴的 jar 包。
manual 目錄是 Ant 程式的說明文件。
3、在「我的電腦」→ 右鍵屬性 → 進階系統設定 → 環境變數 中設定 Ant
新增系統變數 ANT_HOME = D:\apache-ant-1.9.1
設定好環境變數,但前提是你已經設定好 JDK 的環境變數。如果沒有設定 JDK 環境變數,請先設定好 JDK 變數。JDK 環境設定方法如下:
測試程式碼如下:
public class Test {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
用記事本編輯存為 Test.java,開啟命令提示字元視窗,cd 到檔案所在目錄:
javac Test.java // 編譯指令
java Test // 執行程式
如果輸出為:Hello World! OK,設定完成,否則重新檢查。
4、測試 Ant
在命令提示字元視窗中輸入 ant,如果出現 Ant 版本資訊,則安裝成功。
5、Ant 執行時環境
Ant 執行指令時,有時會需要一些常用的 jar 庫。這些庫會存在於每一個 Ant 專案中,這時可以把這個 jar 包放到 ant_home\lib 目錄中作為全域庫使用。
如果你不想「汙染」原始的 Ant 程式,可以把 jar 包放在使用者目錄下 ${user.home}/.ant/lib。
如果只是暫時要添加 lib,可以在執行 Ant 時指定 -lib 參數。
6、Ant 指令
語法元素說明:
-help 顯示 Ant 指令及其選項的說明資訊
-projecthelp 顯示建置檔案中所有使用者撰寫的說明文件
-version 顯示 Ant 版本資訊
-quiet 抑制非 echo 任務產生的大部分資訊
-verbose 顯示建置過程中每個操作的詳細資訊
-debug 顯示偵錯資訊
-emacs 格式化日誌資訊以便 Emacs shell mode 解析
-logfile filename 將日誌輸出重導向到指定檔案
-logger classname 指定處理 Ant 日誌記錄的類別
-listener classname 宣告一個監聽類別
-buildfile filename 指定 Ant 要處理的建置檔案,預設為 build.xml
-Dproperty=value 在命令列定義一個屬性名稱-值對
-find filename 指定建置檔案,若目前目錄找不到則向父目錄搜尋
7、Ant 腳本:專案、目標、屬性、任務
詳細說明了 project、target、property、copy、delete、mkdir、move、echo、jar、javac、java、arg、environment、filelist、fileset、patternset、filterset、path 等核心元素與任務的用法與屬性,並提供大量 XML 範例。
8、Ant 編譯打包、執行專案完整範例
<?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="helloWorld.jar"/>
<target name="init">
<mkdir dir="${dest}"/>
<mkdir dir="temp"/>
<mkdir dir="temp2"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
<target name="build" depends="compile">
<jar destfile="${hello_jar}" basedir="classes">
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-class" value="package.Main"/>
</manifest>
</jar>
<copy file="${hello_jar}" tofile="${dest}\temp.jar"/>
<copy todir="temp">
<fileset dir="src">
<include name="**/*.java"/>
</fileset>
</copy>
<move file="${dest}\temp.jar" tofile="temp\move-temp.jar"/>
<zip basedir="${basedir}\classes" zipfile="temp\output.zip"/>
<gzip src="classes\**\*.class" zipfile="output.class.gz"/>
<unzip src="output.class.gz" dest="extractDir"/>
</target>
<target name="run" depends="build">
<java classname="com.hoo.test.HelloWorld" classpath="${hello_jar}"/>
</target>
<target name="clean">
<delete dir="${dest}"/>
<delete file="${hello_jar}"/>
</target>
<tstamp>
<format property="OFFSET_TIME" pattern="HH:mm:ss" offset="10" unit="minute"/>
</tstamp>
<target name="rerun" depends="clean,run">
<echo message="###${TSTAMP}#${TODAY}#${DSTAMP}###"/>
<ant target="clean"/>
<ant target="run"/>
</target>
</project>
Ant 不難,你用它就像在 DOS 視窗輸入指令一樣,只是將指令轉換為 XML 腳本,可以重複執行,在一定程度上提高了效率和重複性工作的自動化。