第一步:編譯測試
首先,在build.xml文件里定義一個(gè)單獨(dú)的構(gòu)建目標(biāo),以便編譯測試源文件。
? <target name="compile-tests" depends="compile">
??? <javac srcdir="${test.dir}" destdir="${build.test.dir}">
????? <classpath refid="project.classpath" />
??? </javac>
? </target>
compile-tests目標(biāo)用<javac>任務(wù)在test.dir目錄編譯測試源文件,并將結(jié)果類文件放入build.test.dir目錄,用project.classpath路徑作為測試代碼的類路徑。
第二步:運(yùn)行測試
在build.xml文件里定義構(gòu)建目標(biāo),使所有的JUnit測試自動(dòng)運(yùn)行。
? <target name="test" depends="compile-tests">
??? <junit haltonfailure="true">
????? <classpath refid="project.classpath" />
????? <formatter type="brief" usefile="false" />
????? <batchtest>
??????? <fileset dir="${build.test.dir}"
????????? includes="**/*Test.class" />
????? </batchtest>
????? <sysproperty key="doc.dir"?? value="${doc.dir}" />
????? <sysproperty key="index.dir" value="${index.dir}" />
??? </junit>
? </target>
test目標(biāo)的depends屬性生成與剛定義的compile-tests目標(biāo)的依存關(guān)系。
如果構(gòu)建成功,意味著所有的東西不僅都編譯過,還都通過了測試。
將haltonfailure屬性設(shè)為true會(huì)使構(gòu)建隨著任何測試失敗而失敗。
這里我們再次用project.classpath定義了運(yùn)行JUnit測試的類路徑。
下面定義了一個(gè)輸出格式化器,在<formatter> 元素中,使用brief類型來輸出每個(gè)運(yùn)行的測試用例的名稱及其統(tǒng)計(jì)信息,僅當(dāng)測試失敗時(shí)才有更詳細(xì)的信息(plain類型默認(rèn)比brief類型輸出信息多一些;xml類型將測試結(jié)果以XML格式輸出)。將usefile屬性值設(shè)為false會(huì)將測試結(jié)果送往控制臺,而不是寫入文件。
<batchtest>任務(wù)收集從封閉<fileset>元素中返回的所有測試,并自動(dòng)創(chuàng)建包含了所有測試的測試suite。我們將對所有的測試類用*Test.java命名約定取名,這些文件將編譯成*Test.class文件,放在<fileset>的build.test.dir性質(zhì)指向的目錄中。
最后,<sysproperty>元素定義系統(tǒng)性質(zhì)為一個(gè)鍵值對,這些性質(zhì)可以在測試代碼中訪問。這里,測試需要知道從哪里找到文檔,以及向哪里放入文檔的索引結(jié)果,在運(yùn)行測試時(shí)我們將傳遞這些結(jié)果,例如,測試在運(yùn)行時(shí)查看送入的doc.dir系統(tǒng)性質(zhì)來定位項(xiàng)目目錄結(jié)構(gòu)中doc目錄的絕對路徑。
要運(yùn)行測試,請執(zhí)行test目標(biāo):
$?ant test
最后,打掃戰(zhàn)場
我們可以定義一個(gè)刪除所有構(gòu)建輸出的Ant目標(biāo)。
? <target name="clean">
??? <delete dir="${build.dir}" />
? </target>
clean目標(biāo)使用<delete>任務(wù)來刪除build.dir所指的目錄。要?jiǎng)h除目錄,請運(yùn)行clean目標(biāo):
$ ant clean
沖掉這些構(gòu)建輸出有積極的作用:從頭開始生成構(gòu)建,可以發(fā)現(xiàn)可能被累積構(gòu)建掩蓋的錯(cuò)誤。
完整的build.xml:































































下面再舉一個(gè)實(shí)際項(xiàng)目中用到的構(gòu)建文件的例子:





































也許你已經(jīng)看出來了,這就是〈〈jsp2.0技術(shù)手冊〉〉里面的build.xml文件啦!