使用时将〈 〉替换成半角的< >
〈?xml version="1.0"?〉
〈project name="Hello world" default="doc"〉
〈!-- properies --〉
〈property name="src.dir" value="src" /〉
〈property name="report.dir" value="report" /〉
〈property name="classes.dir" value="classes" /〉
〈property name="lib.dir" value="lib" /〉
〈property name="dist.dir" value="dist" /〉
〈property name="doc.dir" value="doc"/〉
〈!-- 定义classpath --〉
〈path id="master-classpath"〉
〈fileset file="${lib.dir}/*.jar" /〉
〈pathelement path="${classes.dir}"/〉
〈/path〉
〈!-- 初始化任务 --〉
〈target name="init"〉
〈/target〉
〈!-- 编译 --〉
〈target name="compile" depends="init" description="compile the source files"〉
〈mkdir dir="${classes.dir}"/〉
〈javac srcdir="${src.dir}" destdir="${classes.dir}" target="1.4"〉
〈classpath refid="master-classpath"/〉
〈/javac〉
〈/target〉
〈!-- 测试 --〉
〈target name="test" depends="compile" description="run junit test"〉
〈mkdir dir="${report.dir}"/〉
〈junit printsummary="on"
haltonfailure="false"
failureproperty="tests.failed"
showoutput="true"〉
〈classpath refid="master-classpath" /〉
〈formatter type="plain"/〉
〈batchtest todir="${report.dir}"〉
〈fileset dir="${classes.dir}"〉
〈include name="**/*Test.*"/〉
〈/fileset〉
〈/batchtest〉
〈/junit〉
〈fail if="tests.failed"〉
***********************************************************
**** One or more tests failed! Check the output ... ****
***********************************************************
〈/fail〉
〈/target〉
〈!-- 打包成jar --〉
〈target name="pack" depends="test" description="make .jar file"〉
〈mkdir dir="${dist.dir}" /〉
〈jar destfile="${dist.dir}/hello.jar" basedir="${classes.dir}"〉
〈exclude name="**/*Test.*" /〉
〈exclude name="**/Test*.*" /〉
〈/jar〉
〈/target〉
〈!-- 输出api文档 --〉
〈target name="doc" depends="pack" description="create api doc"〉
〈mkdir dir="${doc.dir}" /〉
〈javadoc destdir="${doc.dir}"
author="true"
version="true"
use="true"
windowtitle="Test API"〉
〈packageset dir="${src.dir}" defaultexcludes="yes"〉
〈include name="example/**" /〉
〈/packageset〉
〈doctitle〉〈![CDATA[〈h1〉Hello, test〈/h1〉]]〉〈/doctitle〉
〈bottom〉〈![CDATA[〈i〉All Rights Reserved.〈/i〉]]〉〈/bottom〉
〈tag name="todo" scope="all" description="To do:" /〉
〈/javadoc〉
〈/target〉
〈!-- 清除编译后的文件--〉
〈target name="clean"〉
〈delete dir="${classes.dir}"/〉
〈mkdir dir="${classes.dir}"/〉
〈delete〉〈fileset dir="${doc.dir}" includes="*.html"/〉〈/delete〉
〈/target〉
〈/project〉
在最后增加了一个清除目标,清除类文件总是一个很好的主意,因为它可以在将来的编译中避免错误的相关性问题。假设你在类A中定义了一个常量foo,并且在类B中使用它。当你编译这些Java源文件的时候,foo的值被嵌入在B的类文件中。如果你修改foo的值,并且重新编译(没有删除类文件),javac任务就不会编译类B,因为它的源文件比相应的类要旧,因此旧的值将保持不变。即便用javac使用depend属性也不能解决这个问题,因为Java编译器的这个选择是一种错误。Jikes的相关性检查较好,但是你应该重新构建所有的类文件,这样才是最快的办法。