版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/1494367
用Ant建構腳本(1)
首先聲明,本文基于Apache Ant官方網站
http://ant.apache.org/manual/的《Apache Ant 1.7.0Beta2 Manual》翻譯而得。
一、Apache Ant簡介
1、Ant是Java開源組織Apache的一個項目,是一個基于Java的build工具。其建構腳本有4個不同的實作:
(1)Sun Microsystems公司的參考實作;
(2)SolarMetric的Kodo實作;
(3)Libelis的Lido實作;
(4)SignSoft的IntelliBO實作。
其實隻要實作提供Ant可以使用的指令行工具,就可以實作增加新的腳本。
Ant可以通過其腳本語言,自動将項目檔案複制到某個目錄、開發項目,或者生成一些代碼、執行SQL語言。總之,Ant可以幫助程式員完成項目開發中除了開發代碼以外的大部分輔助性的工作。很多IDE工具能自動生成腳本,但總有些缺點,如不能完成使用者的自定義的要求。
2、Ant的優點:
(1)文法簡單易學,腳本使用XML格式編寫;
(2)易于使用,建構過程自動化;
(3)跨平台,Java類路徑和目錄結構都是以可移植的方式進行處理;
(4)速度快,像編譯和打包這樣的Java正常工作都可以在Ant的JVM中進行,節省了啟動其他JVM所耗費的時間;
(5)內建JUnit,适合進行XP開發模式所提倡的單元測試;
(6)易于使用Java進行功能擴充;
(7)支援J2EE部署;
(8)善于Java項目的部署工作;
(9)已經成為大多數開源項目的标準建構工具;
(10)由于Ant支援測試和部署,是以可以用于“編譯-測試-部署”的過程。
3、Ant的安裝:兩種方式:
(1)用已編譯好的binary檔案安裝Ant;
(2)用源代碼自己編譯Ant。
要想自己編譯Ant,需将一個JAXP相容的XML解析器(parser)放在CLASSPATH環境變量中。binary形式的Ant包括最新版的Apache Crimson XML解析器。如想使用其他的JAXP相容的解析器,需要從Ant的lib目錄中删掉jaxp.jar以及crimson.jar,然後将自己的解析器的JAR檔案放到Ant的lib目錄中或放在CLASSPATH環境變量中。
安裝有三個步驟:
(1)将下載下傳的binary壓縮包解壓到所需目錄;
(2)将bin目錄加入path環境變量;
(3)設定ANT_HOME環境變量,指向Ant目錄;
(4)設定JDK的環境變量。
在windows下的安裝非常簡單,是以本文以在UNIX下安裝Ant為例,假定安裝在/usr/local/ant目錄下,設定環境變量如下:
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.5.0
export PATH=${PATH}:${ANT_HOME}/bin
4、Ant指令行使用方法:
ant [options] [target1[target2[target3...]]]
其中,options參數和意義:
-help:顯示描述antml及其選項的幫助資訊;
-projecthelp:顯示包含在建構檔案種的、所有使用者編寫的建構文檔,也即各個<target>中description屬性的文本,以及包含在<description>元素中的任何文本;
-version:顯示Ant及其版本資訊,然後退出;
-quiet:阻止不是由建構檔案中的echo任務所産生的大多數資訊;
-verbose:顯示建構過程中每個操作的詳細資訊,此選項與debug選項隻能二選其一;
-debug:顯示Ant和任務釋出人員已經标志為調試資訊的資訊;
-emacs:對日志消息進行格式化;
-logfile:将日志輸出重定向到指定的檔案;
-logger:指定一個類來處理Ant的日志記錄,所指定的類必須實作org.apache.tools.ant.BuildLogger接口;
-listener:為Ant聲明一個監聽器,并增加到其監聽者清單中;
-buildfile:指定Ant需要處理的建構檔案,預設的檔案為build.xml;
-find:指定Ant需要處理的建構檔案,如果找不到,則到父目錄中去搜尋,直到系統根目錄為止。
5、預設的項目目錄
常用的項目目錄:
bin:公共的二進制檔案,以及運作腳本;
build:臨時建立的檔案,如類檔案等;
dist:目标輸出檔案,如生成jar檔案等;
doc/javadocs:文檔;
lib:需要導出的java包;
src:源檔案。
6、建構檔案
Ant的build檔案包含一個根節點project,每個project定義了至少一個或多個target,每個target又是一系列task的集合。
每個task是一段可被執行的代碼,學習Ant的過程其實就是掌握這大量的task。