都說Linux環境下的程式員如果不會使用GNU make來構建和管理自己的工程,應該不能算是一個合格的專業程式員,至少不能稱得上是Unix程式員。
而在一說到Ant的時候,很多人就把這兩個的功能對比來說,所以是否可以這樣說呢?如果不能用Ant來構建和管理自己的工程,應該不能算是一個合格的Java工程師呢?關於Ant和make的關係,這裡只說一句,與make相比,Ant完全由Java實現,具有跨平台的好處。
說了這麼多,那麼Ant到底是用來幹什麼呢?你如果從網上查,都會這樣告訴你,這是一個構建工具,但又不僅限於構建。例如可以和Xdoclet配合產生Hibernate設定檔和Hibernate對應檔。
要使用,就得下載、安裝,那麼就先說一下下載安裝。
自己度娘或穀哥找一下Ant,然後解壓。接下來就埼一些配置:
設定ANT_HOME環境變數,指向你解壓的Ant目錄。然後在Path中添加%ANT_HOME%\bin。這裡小科普一下,你在cmd中運行某個命令時,報不是內部命令這種錯的時候,就看一下這個命令所在的路徑是不是在Path中。
完事之後,開啟cmd,打一下ant -version,看會不會出現ant的版本資訊,如果出現了呢就說明你的ant已經安裝好了。
下面就開始進入Ant的天堂了,首先來瞭解一下Ant的基本使用
首先,建立一建立一個空的檔案夾,我命名為testAnt,在這個檔案夾中建立一src/jianxin/ant的目錄,在ant中建立一個HelloWorld.java檔案:
package jianxin.ant;public class HelloWorld{public static void main(String[] args){System.out.println("Hello World");}}
然後,在在testAnt中建立build.xml檔案
<project name="HelloWorld" basedir="." default="main"> <property name="src.dir" value="src"/> <property name="build.dir" value="build"/> <property name="classes.dir" value="${build.dir}/classes"/> <property name="jar.dir" value="${build.dir}/jar"/> <property name="main-class" value="jianxin.ant.HelloWorld"/> <target name="clean"> <delete dir="${build.dir}"/> </target> <target name="compile"> <mkdir dir="${classes.dir}"/> <javac srcdir="${src.dir}" destdir="${classes.dir}"/> </target> <target name="jar" depends="compile"> <mkdir dir="${jar.dir}"/> <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}"> <manifest> <attribute name="Main-Class" value="${main-class}"/> </manifest> </jar> </target> <target name="run" depends="jar"> <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/> </target> <target name="clean-build" depends="clean,jar"/> <target name="main" depends="clean,run"/></project>
開啟cmd視窗,進入testAnt的根目錄,運行ant:
至此,一個工程中需要的清理、編譯、打包、運行就都通過Ant協助我們完成了。
此文只是一個Ant的Hello World,從上面的build的編寫中不難發現一些熟悉的字樣,deltete、mkdir、javac、jar、java…,這些命令在cmd的命令列中都是存在的,所以無論Ant如何變化,只要用你能手動寫cmd來完成對項目的管理,那麼都可以通過查詢Ant的文檔,然後編寫Ant來自動完成,現在來看,Ant被主要被用來構建,但又不局限於構建,就清楚明白了。
關於project、target,property三個標籤,不多說,自己做一遍上面我敲的例子後,如果還是不明白,那麼留言討論。