說明:
1. 目標: 滿足基本Java項目的全面構建和部署需求。
2. 參照NetBeans的build.xml設計,結構如圖:
3. build.xml代碼:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Project Name" default="default" basedir=".">
<description>Builds, tests, and runs the project.</description>
<!-- ********************************************************
引入資源和定義資源
******************************************************** -->
<!--
引入資源
-->
<property file="build.properties"/>
<property environment="env"/>
<!--
定義源程序文件夾
-->
<property name="src.dir" location="src/java"/>
<property name="test.dir" location="test"/>
<property name="web.dir" location="web"/>
<!--
定義目標程序文件夾
-->
<property name="build.dir" location="build"/>
<property name="build.classes.dir" location="${build.dir}/classes"/>
<property name="build.test.dir" location="${build.dir}/test"/>
<property name="dist.dir" location="dist"/>
<!--
定義其他文件夾
-->
<property name="lib.dir" location="lib"/>
<property name="doc.dir" location="doc"/>
<property name="index.dir" location="index"/>
<property name="deploy.dir" location="${env.CATALINA_HOME}"/>
<property name="deploy.lib.dir" location="${deploy.dir}/lib"/>
<!--
定義其他文件
-->
<property name="dist.jar" location="${dist.dir}/WEB-INF/lib/${project.name}-${project.version}.jar"/>
<property name="deploy.war" location="${deploy.dir}/webapps/${project.name}.war"/>
<!--
定義其他屬性
-->
<available file="${dist.dir}/enduser.agreement" property="final.version"/>
<!-- ********************************************************
設置path
******************************************************** -->
<path id="project.classpath">
<pathelement location="${java.home}/jre/lib/rt.jar"/>
<pathelement location="${build.classes.dir}"/>
<pathelement location="${build.test.dir}"/>
<fileset dir="${deploy.lib.dir}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="init" description=" 信息 : 顯示項目基本信息.">
<tstamp>
<format property="now" pattern="yyyy-MM-dd HH:mm"/>
</tstamp>
<echo> ==================================================
||
|| 顯示項目基本信息.
||
|| 項目名稱: ${project.name}
|| 項目版本: ${project.version}
|| 作者 : ${author}
|| 時戳 : ${DSTAMP}-${TSTAMP}
||
|| 用法:
|| ant -buildfile build.xml compile 或
|| ant compile 或
|| ant 甚至
|| ant clean dist
|| 幫助:
|| ant -projecthelp
||
==================================================</echo>
</target>
<target name="prepare" depends="init" description=" 準備 : 創建各種文件夾.">
<echo> ==================================================
||
|| 創建各種文件夾.
||
================================================== </echo>
<!-- 創建源程序文件夾 -->
<mkdir dir="${src.dir}"/>
<mkdir dir="${test.dir}"/>
<mkdir dir="${web.dir}"/>
<mkdir dir="${web.dir}/WEB-INF"/>
<!-- 創建目標程序文件夾 -->
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.classes.dir}"/>
<mkdir dir="${build.test.dir}"/>
<mkdir dir="${dist.dir}"/>
<mkdir dir="${dist.dir}/WEB-INF"/>
<mkdir dir="${dist.dir}/WEB-INF/lib"/>
<!-- 創建其他文件夾 -->
<mkdir dir="${lib.dir}"/>
<mkdir dir="${doc.dir}"/>
<mkdir dir="${index.dir}"/>
</target>
<target name="javadoc" depends="prepare" description="生成文檔: 生成幫助文檔.">
<echo> ==================================================
||
|| 生成幫助文檔.
||
==================================================</echo>
<javadoc packagenames="*.*" sourcepath="${src.dir}" destdir="${doc.dir}" author="true" version="true" use="true" encoding="UTF-8">
<classpath refid="project.classpath"/>
</javadoc>
</target>
<target name="compile" depends="prepare" description=" 編譯 : 編譯所有源程序." unless="final.version">
<echo> ==================================================
||
|| 編譯所有源程序.
||
==================================================</echo>
<javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" deprecation="on" encoding="UTF-8">
<compilerarg value="-Xlint:unchecked"/>
<classpath refid="project.classpath"/>
</javac>
<javac srcdir="${test.dir}" destdir="${build.test.dir}" encoding="UTF-8">
<compilerarg value="-Xlint:unchecked"/>
<classpath refid="project.classpath"/>
</javac>
</target>
<target name="test" depends="compile" description=" 測試 : 運行所有測試程序.">
<echo> ==================================================
||
|| 運行所有測試程序.
||
==================================================</echo>
<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>
<target name="dist" depends="compile" description=" 分發 : 生成分發文件.">
<echo> ==================================================
||
|| 生成分發文件:
|| ${dist.jar}
||
==================================================</echo>
<!-- 從打包文件排除單元測試 -->
<jar destfile="${dist.jar}" basedir="${build.classes.dir}" includes="**/*.*" excludes="**/*Test.class">
<!-- manifest="MANIFEST.MF" > -->
<manifest>
<attribute name="Author" value="${author}"/>
</manifest>
</jar>
</target>
<!-- ********************************************************
用於調試
******************************************************** -->
<target name="debug" depends="dist" description=" 調試 "/>
<!-- ********************************************************
用於效驗
******************************************************** -->
<target name="verify" depends="dist" description=" 效驗 "/>
<target name="run-deploy" depends="dist" description=" 部署 : 把文件部署到指定位置.">
<echo> ==================================================
||
|| 把文件部署到指定位置:
|| ${deploy.war}
||
==================================================</echo>
<copy todir="${dist.dir}/WEB-INF/lib">
<fileset dir="${lib.dir}" includes="*.jar"/>
</copy>
<copy todir="${dist.dir}">
<fileset dir="${web.dir}" includes="**/*.*"/>
</copy>
<jar destfile="${deploy.war}" basedir="${dist.dir}" includes="**/*.*" excludes="**/*Test.class">
<!-- manifest="MANIFEST.MF" > -->
<manifest>
<attribute name="Author" value="${author}"/>
</manifest>
</jar>
</target>
<target name="run" depends="run-deploy" description=" 運行 : 運行指定類的main()函數." unless="Main.classFile">
<echo> ==================================================
||
|| 運行類:
|| ${main.classname}.main()函數.
||
==================================================</echo>
<java dir="${build.classes.dir}" ClassName="${main.classname}">
<classpath refid="project.classpath"/>
</java>
</target>
<target name="clean" depends="init" description="清理所有: 刪除生成的目錄和文件.">
<echo> ==================================================
||
|| 刪除生成的目錄和文件.
||
==================================================</echo>
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
<delete dir="${doc.dir}"/>
<delete file="${deploy.war}"/>
</target>
<!-- ********************************************************
用於執行默認目標
******************************************************** -->
<target name="default" depends="dist,javadoc" description=" 默認 :執行默認目標"/>
<!-- ********************************************************
用於執行全部目標: 信息、清理、準備、編譯、測試、分發、文檔、部署、運行.
******************************************************** -->
<target name="all" depends="clean,test,default,run" description=" 全部 : 執行全部目標: 信息、清理、準備、編譯、測試、分發、文檔、部署、運行."/>
</project>
4. build.properties:
author=interai
project.name=ProjectName
project.version=1.0
main.classname=Main
5. 其他說明:
使用Tomcat,需要配置:CATALINA_HOME環境變量。
以及需要安裝Java SDK和Ant。
(over)
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/JSFCN/archive/2009/09/18/4567421.aspx