現(xiàn)在我們已經(jīng)學(xué)習(xí)了 Ant 的數(shù)據(jù)類型,是時(shí)候在實(shí)際過程中運(yùn)用所學(xué)知識(shí)了。在這一章節(jié)中,我們將會(huì)構(gòu)建一個(gè)項(xiàng)目。這一章節(jié)的目的是創(chuàng)建一個(gè) Ant build 文件,該文件能夠編譯 Java 源文件和將這些類文件存儲(chǔ)在 WEB-INF\classes 文件夾下。
考慮接下來構(gòu)建項(xiàng)目的結(jié)構(gòu):
學(xué)習(xí)完本教程的剩余部分后,就能知道這個(gè)項(xiàng)目是一個(gè) Hello World 傳真應(yīng)用。
C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
. +---faxapp
. +---dao
. +---entity
. +---util
. +---web
+---war
+---images
+---js
+---META-INF
+---styles
+---WEB-INF
+---classes
+---jsp
+---lib
下面給出上述項(xiàng)目的 build.xml 文件的內(nèi)容。讓我們來一條語句接一條語句地來分析它。
<?xml version="1.0"?>
<project name="fax" basedir="." default="build">
<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
<property name="name" value="fax"/>
<path id="master-classpath">
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<pathelement path="${build.dir}"/>
</path>
<target name="build" description="Compile source tree java files">
<mkdir dir="${build.dir}"/>
<javac destdir="${build.dir}" source="1.5" target="1.5">
<src path="${src.dir}"/>
<classpath refid="master-classpath"/>
</javac>
</target>
<target name="clean" description="Clean output directories">
<delete>
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</delete>
</target>
</project>
首先,讓我們來聲明一些源文件,web 文件和構(gòu)建文件的一些屬性信息。
<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
在上面的例子中:
屬性也可以引用其它屬性。在上面的例子中,build.dir 屬性引用了 web.dir 屬性。
在上面的例子中,src.dir 就是項(xiàng)目源文件存放的地方。
我們項(xiàng)目的默認(rèn)目標(biāo)是編譯目標(biāo)。但是首先讓我們來看一下 clean 目標(biāo)。
clean 目標(biāo),就像它的名字所表明的意思一樣,刪除構(gòu)建文件夾中的所有文件。
<target name="clean" description="Clean output directories">
<delete>
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</delete>
</target>
控制類路徑 (master-classpath) 保存類路徑的相關(guān)信息。在這種情況下,它包含了構(gòu)建文件夾和 jar 文件夾中的所有的類文件。
<path id="master-classpath">
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<pathelement path="${build.dir}"/>
</path>
最后,構(gòu)建目標(biāo)構(gòu)建這些文件。首先,我們創(chuàng)建一個(gè)構(gòu)建目錄,如果該目錄不存在,我們就執(zhí)行 javac 命令(具體以 jdk 1.5 作為我們目標(biāo)的編譯環(huán)境)。 我們對(duì) javac 任務(wù)提供源文件夾和類路徑,并且通過執(zhí)行 javac 任務(wù)將類文件存放在構(gòu)建文件夾中。
<target name="build" description="Compile main source tree java files">
<mkdir dir="${build.dir}"/>
<javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"
deprecation="false" optimize="false" failonerror="true">
<src path="${src.dir}"/>
<classpath refid="master-classpath"/>
</javac>
</target>
在這個(gè)文件上執(zhí)行 Ant,編譯 java 源文件,并將編譯后的類文件存放在構(gòu)建文件夾的地方。
運(yùn)行 Ant 文件后,能看到以下輸出:
C:\>ant
Buildfile: C:\build.xml
BUILD SUCCESSFUL
Total time: 6.3 seconds
文件被編譯后,將存儲(chǔ)在 build.dir 文件夾中。
更多建議: