Ant構建Java項目之第1篇
Ant可以代替使用javac、java和jar等命令來執行java操作,從而達到輕松的構建和部署Java工程的目的。下面來看幾個知識點。
1.project元素
project元素是Ant構件文件的根元素,Ant構件文件至少應該包含一個project元素,否則會發生錯誤。在每個project元素下,可包含多個target元素。接下來向讀者展示一下project元素的各屬性。
1)name屬性
用于指定project元素的名稱。
2)default屬性
用于指定project默認執行時所執行的target的名稱。
3)basedir屬性
用于指定基路徑的位置。該屬性沒有指定時,使用Ant的構件文件的附目錄作為基準目錄。
2.target元素
它為Ant的基本執行單元,它可以包含一個或多個具體的任務。多個target可以存在相互依賴關系。它有如下屬性:
1)name屬性
指定target元素的名稱,這個屬性在一個project元素中是唯一的。我們可以通過指定target元素的名稱來指定某個target。
2)depends屬性
用于描述target之間的依賴關系,若與多個target存在依賴關系時,需要以“,”間隔。Ant會依照depends屬性中target出現的順序依次執行每個target。被依賴的target會先執行。
3)if屬性
用于驗證指定的屬性是否存在,若不存在,所在target將不會被執行。
4)unless屬性
該屬性的功能與if屬性的功能正好相反,它也用于驗證指定的屬性是否存在,若不存在,所在target將會被執行。
5)description屬性
該屬性是關于target功能的簡短描述和說明。
3.property元素
該元素可看作參量或者參數的定義,project的屬性可以通過property元素來設定,也可在Ant之外設定。若要在外部引入某文件,例如build.properties文件,可以通過如下內容將其引入:<property file=” build.properties”/>
property元素可用作task的屬性值。在task中是通過將屬性名放在“${”和“}”之間,并放在task屬性值的位置來實現的。
Ant提供了一些內置的屬性,它能得到的系統屬性的列表與Java文檔中System.getPropertis()方法得到的屬性一致。
同時,Ant還提供了一些它自己的內置屬性,如下:
basedir:project基目錄的絕對路徑,該屬性在講解project元素時有詳細說明,不再贅述;
ant.file:buildfile的絕對路徑,如上面的各例子中,ant.file的值為E:"build.xml;
ant.version:Ant的版本,在本文中,值為1.7.0;
ant.project.name:當前指定的project的名字,即前文說到的project的name屬性的值;
ant.java.version:Ant檢測到的JDK的版本,在上例運行結果中可看到為1.5。
下面來看具體的實例。
1.利用Ant的javac任務來編譯java程序
其中build.xml文件的源碼如下:
<?xml version="1.0"?> <project name="javacTest" default="compile" basedir="."> <target name="clean"> <delete dir="build"/> </target> <target name="compile" depends="clean"> <mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes"/> </target> </project> |
運行該build.xml文件,結果如下:
Buildfile: Z:\vAccess_myeclipse\TestAnt\build.xml clean: compile: [mkdir] Created dir: Z:\vAccess_myeclipse\TestAnt\build\classes [javac] Z:\vAccess_myeclipse\TestAnt\build.xml:9: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compiling 1 source file to Z:\vAccess_myeclipse\TestAnt\build\classes BUILD SUCCESSFUL Total time: 2 seconds |
2.使用Ant的java任務運行Java程序
Ant中可以使用java任務實現運行Java程序的功能。下面在1的例子中進行如下的修改,修改后的build.xml文件的內容如下:
<?xml version="1.0"?> <project name="javaTest" default="run" basedir="."> <target name="clean"> <delete dir="build"/> </target> <target name="compile" depends="clean"> <mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes"/> </target> <target name="run" depends="compile"> <java classname="com.ant.test01.Test01"> <classpath> <pathelement path="build/classes"/> </classpath> </java> </target> </project> |
可以看到在控制臺的輸出:
...
[java] Hello,Amigo
...
3. 使用Ant的war任務打包J2EE Web項目
配置文件源碼如下:
<?xml version="1.0"?> <project name="antwebproject" default="war" basedir="."> <property name="classes" value="build/classes" /> <property name="build" value="build" /> <property name="lib" value="WebRoot/WEB-INF/lib" /> <!-- 刪除build路徑--> <target name="clean"> <delete dir="build" /> </target> <!-- 建立build/classes路徑,并編譯class文件到build/classes路徑下--> <target name="compile" depends="clean"> <mkdir dir="${classes}" /> <javac srcdir="src" destdir="${classes}" /> </target> <!-- 打war包--> <target name="war" depends="compile"> <war destfile="${build}/TestAnt.war" webxml="WebRoot/WEB-INF/web.xml"> <!-- 拷貝WebRoot下除了WEB-INF和META-INF的兩個文件夾--> <fileset dir="WebRoot" includes="**/*.jsp" /> <!-- 拷貝lib目錄下的jar包--> <lib dir="${lib}" /> <!-- 拷貝build/classes下的class文件--> <classes dir="${classes}" /> </war> </target> </project> |
posted on 2014-05-20 10:24 順其自然EVO 閱讀(175) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄