http://ant.apache.org/bindownload.cgi
安裝
壓縮檔解開來即可,把 bin/目錄加到你的執行目錄中
簡單使用說明
ant 執行的工作定義在執行目前執行目錄下的 build.xml ,如果你想指定其他的,可在執行時加 -f 參數指定。
而build.xml 裡有兩個主要的標籤
project : 定義你的專案,包含你要執行的工作目標以下是一個簡單的 build.xml範例,只定義了一個工作目標"hi",裡頭只執行一個 echo 的任務
target: 定義你的工作目標,一個project 中可以多個 target,而一個target 中至少應該包含一個工作任務 (task),詳細的工作項目列表請參考 : http://ant.apache.org/manual/tasklist.html
<project>
<target name="hi">
<echo>Hello World!</echo>
</target>
</project>
執行
ant 執行時預設會去找當前目錄下的build.xml,然後執行你指定的工作目標
(如果 project 有加上 default 的屬性,那只要執行 ant 即可)ant 執行時預設會去找當前目錄下的build.xml,然後執行你指定的工作目標
shell> ant hi
Buildfile: /home/staff/ywhuang/app/java/jts_current/build.xml
hi:
[echo] Hello World!
BUILD SUCCESSFUL
Total time: 0 seconds
<project default="hi">進階使用範例
<target name="hi">
<echo>Hello World!</echo>
</target>
</project>
假設我們現在編譯、執行、測試一組Java 程式,而每次重新編譯前都要先清除掉舊的class檔,並清掉DB內舊資料,那build file 我們可以這樣寫
而 build.properties 的內容如下
在Ant中使用SVN ? 可以,但那是另一個艱辛的故事了,有機會再說吧
<project name="MyProject" basedir=".">
<description>
simple example build file
</description>
<!-- 設定執行時需要用到的一些屬性,可以寫在 property 標籤裡,也可以寫在外頭的另一個檔,再讀進來 -->
<property file="build.properties" />
<!-- 定義一般的 java 函式庫 -->
<path id="java.classpath">
<pathelement path="${build}"/>
<pathelement path="/home/staff/ywhuang/app/java/lib/mysql-connector-java-5.1.16-bin.jar"/>
</path>
<target name="init">
<!-- 產生timestamp -->
<tstamp/>
<!-- 建立編譯時需要的目錄, -->
<mkdir dir="${build}"/>
</target>
<target name="compile" description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}" classpathref="java.classpath" />
</target>
<!-- 執行 java 程式 -->
<target name="run">
<java classname="JTS" classpathref="java.classpath" />
</target>
<!-- 每次重新編譯前先清除舊的 class 檔及DB中的舊資料 -->
<target name="clean" description="clean up" >
<!--刪除編譯目錄 -->
<delete dir="${build}"/>
<!-- 讀取後頭SQL連線時需要的密碼,可以直接明碼寫死 -->
<!-- 但讓使用者輸入後再指定給password 會比較安全 -->
<input message="mysql password:>" addproperty="password">
<handler classname="org.apache.tools.ant.input.SecureInputHandler" />
</input>
<!-- 連線到 mysql server 並執行清除舊資料的工作 -->
<sql driver="com.mysql.jdbc.Driver" url="${mysql.url}" userid="root" password="${password}" classpath="${mysql.classpath}">
truncate table my_table_1;
truncate table my_table_2;
</sql>
</target>
</project>
build=classes執行時依序執行 ant clean, ant init, ant compile, ant run 即可
src=src
如果連四個指令都嫌麻煩,那還可以更簡單 : 利用 target 的depends 屬性,指定run 執行前要先執行compile,compile 前要先init ,init 前要先clean,如果再幫project加上default="run",那只要執行 ant 就可以一次全部執行完
<project name="MyProject" default="run" basedir=".">執行結果:
<target name="init" depends="clean">
<!-- 略 -->
</target>
<target name="compile" depends="init">
<!-- 略 -->
</target>
<target name="run" depends="compile">
<!-- 略 -->
</target>
<target name="clean" description="clean up" >
<!-- 略 -->
</target>
</project>
shell > ant
Buildfile: /home/staff/ywhuang/app/java/jts_current/build.xmlRef
clean:
[delete] Deleting directory /home/staff/ywhuang/app/java/jts_current/classes
mysql password:>
[sql] Executing commands
[sql] 2 of 2 SQL statements executed successfully
init:
[mkdir] Created dir: /home/staff/ywhuang/app/java/jts_current/classes
compile:
[javac] Compiling 9 source files to /home/staff/ywhuang/app/java/jts_current/classes
run:
[java] some java system.out messages
BUILD SUCCESSFUL
Total time: 16 seconds
http://ant.apache.org/manual/index.html
0 意見:
張貼留言