ANT安裝、配置(轉)

post0發表於2007-08-11
ANT安裝、配置(轉)[@more@]

內容摘要:

ant是一個基於JAVA的自動化指令碼引擎,指令碼格式為XML。除了做JAVA編譯相關任務外,ANT還可以透過外掛實現很多應用的呼叫。

ANT的基本概念:

ANT的安裝:解包,設定路徑

ANT的使用:最好的學習只不過是一個簡單實用的例子起步……

ANT的基本概念:Java的Makefile

當一個程式碼專案大了以後,每次重新編譯,打包,測試等都會變得非常複雜而且重複,因此c語言中有make指令碼來幫助這些工作的批次完成。在Java 中應用是平臺無關性的,當然不會用平臺相關的make指令碼來完成這些批處理任務了,ANT本身就是這樣一個流程指令碼引擎,用於自動化呼叫程式完成專案的編譯,打包,測試等。除了基於JAVA是平臺無關的外,指令碼的格式是基於XML的,比make指令碼來說還要好維護一些。

每個ant指令碼(預設叫build.xml)中設定了一系列任務(target):比如對於一個一般的專案可能需要有以下任務。

任務1:usage 列印本指令碼的幫助資訊(預設)

任務2:clean 任務3:javadoc 任務4:jar 任務5:all 而多個任務之間往往又包含了一定了依賴關係:比如把整個應用打包任務(jar)的這個依賴於編譯任務(build),而編譯任務又依賴於整個環境初始化任務(init)等。

注:我看到很多專案的ant指令碼中的命名基本上都是一致的,比如:編譯一般叫build或者compile;打包一般叫jar或war;生成文件一般命名為 javadoc或javadocs;執行全部任務all。在每個任務的中,ANT會根據配置呼叫一些外部應用並配以相應引數執行。雖然ANT可呼叫的外部應用種類非常豐富,但其實最常用的就2,3個:比如javac javadoc jar等。

ANT的安裝

解包後在系統可執行路徑中加入指向ant的bin的路徑就可以了,比如可以在GNU/Linux上把以下配置加入/etc/profile中:

export ANT_HOME=/home/ant

export JAVA_HOME=/usr/java/j2sdk1.4.1

export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin

這樣執行ant 後,如果不指定配置檔案ant會預設找build.xml這個配置檔案,並根據配置檔案執行任務,預設的任務設定可以指向最常用的任務,比如: build,或指向列印幫助資訊:usage,告訴使用者有那些指令碼選項可以使用。

ANT的使用

最好的學習過程就是看懂那些open source專案中的build.xml指令碼,然後根據自己的需要簡化成一個更簡單的,ANT和APACHE上很多非常工程派的專案:簡單易用,而且適應性非常強,因為這些專案的建立往往來源於開發人員日常最直接的需求。

以下是的一個WebLucene應用的例子:修改自JDOM的build.xml:

<!-- =================================================================== --&gt

<!-- Initialization target --&gt

<!-- =================================================================== --&gt

<!-- =================================================================== --&gt

<!-- Help on usage --&gt

<!-- =================================================================== --&gt

<!-- =================================================================== --&gt

<!-- Prepares the source code --&gt

<!-- =================================================================== --&gt

<!-- create directories --&gt

<!-- copy src files --&gt

<!-- =================================================================== --&gt

<!-- Compiles the source directory --&gt

<!-- =================================================================== --&gt

destdir="${build.dest}"

debug="${debug}"

optimize="${optimize}">

<!-- =================================================================== --&gt

<!-- Creates the class package --&gt

<!-- =================================================================== --&gt

basedir="${build.dest}"

includes="**"/>

<!-- =================================================================== --&gt

<!-- Creates the API documentation --&gt

<!-- =================================================================== --&gt

sourcepath="${build.src}"

destdir="${build.javadocs}"

author="true"

version="true"

use="true"

splitindex="true"

windowtitle="${Name} API"

doctitle="${Name}">

<!-- =================================================================== --&gt

<!-- Clean targets --&gt

<!-- =================================================================== --&gt

<!-- End of file --&gt

預設任務:usage 列印幫助文件,告訴有那些任務選項:可用的有build, jar, javadoc和clean.

初始化環境變數:init

所有任務都基於一些基本環境變數的設定初始化完成,是後續其他任務的基礎,在環境初始化過程中,有2點比較可以方便設定:

1 除了使用卻預設的property設定了JAVA源路徑和輸出路徑外,引用了一個外部的build.properties檔案中的設定,

這樣大部分簡單配置使用者只要會看懂build.properties就可以了,畢竟XML比起key value的屬性檔案還是要可讀性差一些。用build.properties也可以方便其他使用者從編譯的細節中解放出來。

2 CLASSPATH設定:使用了其中的:

則相當於設定了:CLASSPATH=/path/to/resin/lib/jsdk23.jar; /path/to/project/lib/*.jar;

檔案複製:prepare-src

建立臨時SRC存放目錄和輸出目錄。

<!-- =================================================================== --&gt

<!-- Prepares the source code --&gt

<!-- =================================================================== --&gt

<!-- create directories --&gt

<!-- copy src files --&gt

編譯任務:build

編譯時的CLASSPATH環境透過一下方式找到引用一個path物件

打包任務:jar

對應用打包生成專案所寫名的.jar檔案

<!-- =================================================================== --&gt

<!-- Creates the class package --&gt

<!-- =================================================================== --&gt

basedir="${build.dest}"

includes="**"/>

生成JAVADOC文件任務: javadoc

<!-- =================================================================== --&gt

<!-- Creates the API documentation --&gt

<!-- =================================================================== --&gt

sourcepath="${build.src}"

destdir="${build.javadocs}"

author="true"

version="true"

use="true"

splitindex="true"

windowtitle="${Name} API"

doctitle="${Name}">

清空臨時編譯檔案:clean

<!-- =================================================================== --&gt

<!-- Clean targets --&gt

<!-- =================================================================== --&gt

TODO:

更多工/擴充套件:(樣例)

測試任務:JUnit測試

程式碼風格檢查任務:CheckStyle,Jalopy等

郵件警報任務:可以把以上這些任務的輸出警告傳送到制定的使用者列表中,這個任務可以設定每天自動執行。

參考資料:

Jakarta ANT:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945338/,如需轉載,請註明出處,否則將追究法律責任。

相關文章