ANT安裝、配置

okone96發表於2007-03-16
文章轉載自網際網路,如果您覺得我們侵權了,請聯絡,我們會立刻處理。

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

  1. ANT的基本概念:
  2. ANT的安裝:解包,設定路徑
  3. 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上很多非常工程派的專案:簡單易用,而且適應 性非常強,因為這些專案的建立往往來源於開發人員日常最直接的需求。
以下是的一個應 用的例子:修改自的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等
  • 郵件警報任務:可以把以上這些任務的輸出警告傳送到制定的使用者列表中,這個任務可以設定每天自動執行。
[@more@]

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

相關文章