基本实用的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

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