一,構建ant環境
要使用ant首先要構建一個ant環境,步驟很簡單:
1),安裝jdk,設置JAVA_HOME ,PATH ,CLASS_PATH(這些應該是看這篇文章的人應該知道的)
2),下載ant 地址www.apache.org找一個你喜歡的版本,或者干脆最新的版本
3),解壓ant 你得到的是一個壓縮包,解壓縮它,并把它放在一個盡量簡單的目錄,例如D:\ant-1.6雖然你不一?定要這么做,但這么做是有好處的。
4),設置ANT_HOME PATH中添加ANT_HOME目錄下的bin目錄
5),測試一下你的設置,開始-->運行-->cmd進入命令行-->鍵入 ant 回車,如果看到
Buildfile: build.xml does not exist!
Build failed
那么恭喜你你已經完成ant的設置
二,體驗ant
就像每個語言都有HelloWorld一樣,一個最簡單的應用能讓人感受一下Ant
1,首先你要知道你要干什么,我現在想做的事情是:
編寫一些程序
編譯它們
把它打包成jar包
把他們放在應該放置的地方
運行它們
這里為了簡單起見只寫一個程序,就是HelloWorld.java程序代碼如下:
package test.ant;
public class HelloWorld{
?public static void main(String[] args){
??System.out.println("Hello world1");
?}
};
2,為了達到上邊的目的,你可以手動的用javac 、copy 、jar、java來完成,但是考慮一下如果你有成百上千個類,在多次調試,部署的時候,一次次的javac 、copy、jar、java那將是一份辛苦的工作。現在看看ant怎么優雅的完成它們。
要運行ant需要有一個build.xml雖然不一定要叫這個名字,但是建議你這么做
下邊就是一個完整的build.xml,然后我們來詳細的解釋每一句
<?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="hello1.jar"/>
?<target name="init">
??<mkdir dir="${dest}"/>
?</target>
?<target name="compile" depends="init">
??<javac srcdir="${src}" destdir="${dest}"/>
?</target>
?<target name="build" depends="compile">
??<jar jarfile="${hello_jar}" basedir="${dest}"/>
?</target>
?<target name="run" depends="build">
??<java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
?</target>
?<target name="clean">
??<delete dir="${dest}" />
??<delete file="${hello_jar}" />
?</target>
?<target name="rerun" depends="clean,run">
??<ant target="clean" />
??<ant target="run" />
?</target>
</project>
解釋:
<?xml version="1.0" encoding="UTF-8" ?>?
build.xml中的第一句話,沒有實際的意義
<project name="HelloWorld" default="run" basedir=".">
</project>
ant的所有內容必須包含在這個里邊,name是你給它取的名字,basedir故名思意就是工作的根目錄 .代表當前目錄。default代表默認要做的事情。
<property name="src" value="src"/>
類似程序中的變量,為什么這么做想一下變量的作用
<target name="compile" depends="init">
??<javac srcdir="${src}" destdir="${dest}"/>
</target>
把你想做的每一件事情寫成一個target ,它有一個名字,depends是它所依賴的target,在執行這個target 例如這里的compile之前ant會先檢查init是否曾經被執行過,如果執行過則直接直接執行compile,如果沒有則會先執行它依賴的target例如這里的init,然后在執行這個target
如我們的計劃
編譯:
<target name="compile" depends="init">
?<javac srcdir="${src}" destdir="${dest}"/>
</target>
做jar包:
<target name="build" depends="compile">
?<jar jarfile="${hello_jar}" basedir="${dest}"/>
</target>
運行:
<target name="run" depends="build">
?<java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
</target>
為了不用拷貝,我們可以在最開始定義好目標文件夾,這樣ant直接把結果就放在目標文件夾中了
新建文件夾:
<target name="init">
?<mkdir dir="${dest}"/>
</target>
為了更多一點的功能體現,又加入了兩個target
刪除生成的文件
<target name="clean">
?<delete dir="${dest}" />
?<delete file="${hello_jar}" />
</target>
再次運行,這里顯示了如何在一個target里邊調用其他的target
<target name="rerun" depends="clean,run">
?<ant target="clean" />
?<ant target="run" />
</target>
好了,解釋完成了,下邊檢驗一下你的ant吧
新建一個src的文件夾,然后把HelloWorld.java按照包目錄放進去
做好build.xml文件
在命令行下鍵入ant ,你會發現一個個任務都完成了。每次更改完代碼只需要再次鍵入ant
有的時候我們可能并不想運行程序,只想執行這些步驟中的某一兩個步驟,例如我只想重新部署而不想運行,鍵入
ant build
ant中的每一個任務都可以這樣調用ant + target name
好了,這樣一個簡單的ant任務完成了。