提供標準 Ant build.xml 模板,涵蓋:原始碼編譯、Javadoc 生成、JUnit 測試執行、Checkstyle 程式碼規範檢查、打包 JAR、清理輸出目錄。
<?xml version="1.0" encoding="gb2312"?>
<project name="Test Project" default="all" basedir=".">
<!-- 路徑屬性 -->
<property name="src.code" value="src"/>
<property name="src.junit" value="junit"/>
<property name="lib.dir" value="lib"/>
<property name="lib.jar" value="TestClass.jar"/>
<!-- Checkstyle 設定 -->
<property name="checkstyle.config" value="checkstyle.xml"/>
<taskdef resource="checkstyletask.properties" classpath="${lib.dir}/checkstyle-all-3.1.jar"/>
<!-- 輸出目錄 -->
<property name="doc.dir" value="doc"/>
<property name="doc.api" value="${doc.dir}/api"/>
<property name="javadoc.package" value="com.*"/>
<property name="dist.root" value="dist"/>
<property name="dist.proj" value="${dist.root}/proj"/>
<property name="dist.classes" value="${dist.proj}/classes"/>
<property name="dist.lib" value="${dist.proj}/lib"/>
<property name="dist.junit" value="${dist.root}/junit"/>
<!-- Classpath 定義 -->
<path id="classpath">
<fileset dir="${lib.dir}"><include name="**/*.jar"/></fileset>
</path>
<path id="proj.libs">
<fileset dir="${dist.lib}"><include name="**/*.jar"/></fileset>
</path>
<target name="init">
<mkdir dir="${doc.dir}"/>
<mkdir dir="${dist.root}"/>
<mkdir dir="${dist.proj}"/>
<mkdir dir="${dist.lib}"/>
<tstamp/>
<echo message="${TSTAMP}"/>
</target>
<target name="all" depends="compilesrc, javadoc, checkstyle"/>
<!-- 編譯主程式碼 -->
<target name="compilesrc" depends="init">
<mkdir dir="${dist.classes}"/>
<javac destdir="${dist.classes}" deprecation="on">
<src path="${src.code}"/>
<classpath refid="classpath"/>
</javac>
<jar jarfile="${dist.lib}/${lib.jar}" basedir="${dist.classes}">
<include name="**/*.class"/>
</jar>
</target>
<!-- 生成 Javadoc -->
<target name="javadoc" depends="init">
<mkdir dir="${doc.api}"/>
<javadoc packagenames="${javadoc.package}" sourcepath="${src.code}"
private="yes" defaultexcludes="yes" destdir="${doc.dir}/api">
<classpath refid="classpath"/>
</javadoc>
</target>
<!-- 編譯測試碼 -->
<target name="compilejunit" depends="compilesrc">
<mkdir dir="${dist.junit}"/>
<javac destdir="${dist.junit}" deprecation="on">
<src path="${src.junit}"/>
<classpath refid="classpath"/>
<classpath refid="proj.libs"/>
</javac>
</target>
<!-- Checkstyle 檢查 -->
<target name="checkstyle" depends="init">
<checkstyle config="${checkstyle.config}">
<fileset dir="${src.code}" includes="**/*.java"/>
<formatter type="plain"/>
<formatter type="xml" toFile="${dist.root}/checkstyle_errors.xml"/>
</checkstyle>
</target>
<!-- 執行 JUnit 測試 -->
<target name="junit" depends="compilejunit">
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<path refid="classpath"/>
<pathelement location="${dist.junit}"/>
</classpath>
<formatter type="plain"/>
<batchtest todir="${dist.junit}">
<fileset dir="${dist.junit}" includes="**/Test*.class"/>
</batchtest>
</junit>
</target>
<!-- 清理編譯產物 -->
<target name="clean">
<delete dir="${dist.classes}"/>
<delete dir="${dist.junit}"/>
<delete dir="${doc.api}"/>
</target>
<!-- 清理所有輸出 -->
<target name="cleanall" depends="clean">
<delete dir="${doc.dir}"/>
<delete dir="${dist.root}"/>
</target>
</project>
| Target | 功能 | 依賴 |
|---|---|---|
| init | 建立輸出目錄、時間戳 | - |
| compilesrc | 編譯主程式碼、打包 JAR | init |
| javadoc | 生成 API 文檔 | init |
| compilejunit | 編譯測試碼(含主程式 JAR) | compilesrc |
| checkstyle | 程式碼風格檢查(輸出 plain + XML) | init |
| junit | 批次執行測試(Test*.class),失敗即停止 | compilejunit |
| all | 預設目標:編譯+文檔+檢查 | compilesrc, javadoc, checkstyle |
| clean / cleanall | 刪除中間/所有產出物 | - |
checkstyle-all-3.1.jar 放入 lib/,checkstyle.xml 放專案根目錄。src/,測試碼置 junit/(命名慣例 Test*.java)。ant(預設 all)、ant junit、ant cleanall。dist/junit/,Checkstyle 報告至 dist/checkstyle_errors.xml。cobertura 程式碼覆蓋率報告(參考文章 129864)。findbugs 或 pmd 靜態分析。junitreport 生成 HTML 測試報告。property file 外部化環境差異路徑。