一個適合初學者的ant教程

Ant入門



一,構建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任務完成了。
附:注:我看到很多項目的ant腳本中的命名基本上都是一致的,比如:編譯一般叫build或者compile;打包一般叫jar或war;生成文檔一
般命名爲javadoc或javadocs;執行全部任務all。在每個任務的中,ANT會根據配置調用一些外部應用並配以相應參數執行。雖然ANT
可調用的外部應用種類非常豐富,但其實最常用的就2,3個:比如javac javadoc jar等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章