0
推薦
要學(xué)習(xí)ANT的使用,要先了解什么是ANT。
什么是ant呢? ant是構(gòu)建工具;那構(gòu)建是又什么意思呢?形象來說,你要把代碼從某個(gè)地方拿來,編譯,再拷貝到某個(gè)地方去等等操作,當(dāng)然不僅與此,但是主要用來干這個(gè)。
知道這些,我們還要了解為什么要用ANT,呵呵,哦對(duì),就像那位MM說的,當(dāng)然是有好處的:
A, 跨平臺(tái) --因?yàn)閍nt是使用java實(shí)現(xiàn)的,所以它跨平臺(tái)
B,使用簡(jiǎn)單--與ant的兄弟make比起來
C, 語法清晰--同樣是和make相比
D,功能強(qiáng)大--ant能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。當(dāng)你自己開發(fā)一些ant插件的時(shí)候,你會(huì)發(fā)現(xiàn)它更多的功能。
一,構(gòu)建ant環(huán)境
要使用ant首先要構(gòu)建一個(gè)ant環(huán)境,步驟很簡(jiǎn)單:
1),安裝jdk,設(shè)置JAVA_HOME ,PATH ,CLASS_PATH(這些應(yīng)該是看這篇文章的人應(yīng)該知道的)
2),下載ant 地址http://17xx.zhmy.com找一個(gè)你喜歡的版本,或者干脆最新的版本
3),解壓ant 你得到的是一個(gè)壓縮包,解壓縮它,并把它放在一個(gè)盡量簡(jiǎn)單的目錄,例如D:\ant-1.6雖然你不一 定要這么做,但這么做是有好處的。
4),設(shè)置ANT_HOME PATH中添加ANT_HOME目錄下的bin目錄
5),測(cè)試一下你的設(shè)置,開始-->運(yùn)行-->cmd進(jìn)入命令行-->鍵入 ant 回車,如果看到
Buildfile: build.xml does not exist!
Build failed
那么恭喜你你已經(jīng)完成ant的設(shè)置
二,體驗(yàn)ant
就像每個(gè)語言都有HelloWorld一樣,一個(gè)最簡(jiǎn)單的應(yīng)用能讓人感受一下Ant
1,首先你要知道你要干什么,我現(xiàn)在想做的事情是:
編寫一些程序
編譯它們
把它打包成jar包
把他們放在應(yīng)該放置的地方
運(yùn)行它們
這里為了簡(jiǎn)單起見只寫一個(gè)程序,就是HelloWorld.java程序代碼如下:
package test.ant;
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello world1");
}
};
2,為了達(dá)到上邊的目的,你可以手動(dòng)的用javac 、copy 、jar、java來完成,但是考慮一下如果你有成百上千個(gè)類,在多次調(diào)試,部署的時(shí)候,一次次的javac 、copy、jar、
java那將是一份辛苦的工作。現(xiàn)在看看ant怎么優(yōu)雅的完成它們。
要運(yùn)行ant需要有一個(gè)build.xml雖然不一定要叫這個(gè)名字,但是建議你這么做
下邊就是一個(gè)完整的build.xml,然后我們來詳細(xì)的解釋每一句
<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir=".">
<property name="src" value="http://www.zhmy.com/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中的第一句話,沒有實(shí)際的意義
<project name="HelloWorld" default="run" basedir=".">
</project>
ant的所有內(nèi)容必須包含在這個(gè)里邊,name是你給它取的名字,basedir故名思意就是工作的根目錄 .代表當(dāng)前目錄。default代表默認(rèn)要做的事情。
<property name="src" value="src"/>
類似程序中的變量,為什么這么做想一下變量的作用
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
把你想做的每一件事情寫成一個(gè)target ,它有一個(gè)名字,depends是它所依賴的target,在執(zhí)行這個(gè)target 例如這里的compile之前ant會(huì)先檢查init是否曾經(jīng)被執(zhí)行過,如果執(zhí)行
過則直接直接執(zhí)行compile,如果沒有則會(huì)先執(zhí)行它依賴的target例如這里的init,然后在執(zhí)行這個(gè)target
如我們的計(jì)劃
編譯:
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
做jar包:
<target name="build" depends="compile">
<jar jarfile="${hello_jar}" basedir="${dest}"/>
</target>
運(yùn)行:
<target name="run" depends="build">
<java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
</target>
為了不用拷貝,我們可以在最開始定義好目標(biāo)文件夾,這樣ant直接把結(jié)果就放在目標(biāo)文件夾中了
新建文件夾:
<target name="init">
<mkdir dir="${dest}"/>
</target>
為了更多一點(diǎn)的功能體現(xiàn),又加入了兩個(gè)target
刪除生成的文件
<target name="clean">
<delete dir="${dest}" />
<delete file="${hello_jar}" />
</target>
再次運(yùn)行,這里顯示了如何在一個(gè)target里邊調(diào)用其他的target
<target name="rerun" depends="clean,run">
<ant target="clean" />
<ant target="run" />
</target>
好了,解釋完成了,下邊檢驗(yàn)一下你的ant吧
新建一個(gè)src的文件夾,然后把HelloWorld.java按照包目錄放進(jìn)去
做好build.xml文件
在命令行下鍵入ant ,你會(huì)發(fā)現(xiàn)一個(gè)個(gè)任務(wù)都完成了。每次更改完代碼只需要再次鍵入ant
有的時(shí)候我們可能并不想運(yùn)行程序,只想執(zhí)行這些步驟中的某一兩個(gè)步驟,例如我只想重新部署而不想運(yùn)行,鍵入
ant build
ant中的每一個(gè)任務(wù)都可以這樣調(diào)用ant + target name
好了,這樣一個(gè)簡(jiǎn)單的ant任務(wù)完成了。
到此你應(yīng)該看出來了,ant的使用,關(guān)鍵就是build.xml的編寫,一個(gè)優(yōu)秀的build.xml可以用來做模板,甚至直接用就OK,打開命令提示窗口,鍵入ANT即可~~