基本實用的build.xml

說明:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章