近来虽然Maven构建的项目越来越盛行,但是依然还有很多遗留(暂且称之为遗留吧)项目依然是由ANT编译的,今天老夫就整理一下自己目前公司项目用到的ANT模板,既作为老夫的学习笔记,以供将来查看,也分享出来供需要的参考,因为比较简单易懂,就不多说了,直接上代码

<?xml version="1.0" encoding="UTF-8"?>  
<!--  
Ant工程build模板  
ant build file

Example: ant -Dprofile=dev deploy  
test IDC测试环境  
dev 本地开发环境 (default)  
-->  
  <project name="antProject" basedir="." default="prompt">

    <property name="javac.version" value="1.6" />  
    <property name="project.name" value="projectname" />  
    <property name="source.encoding" value="UTF-8" />  
    <property name="deploy.dir" value="/tmp/${project.name}" />

    <!-- project var set -->  
    <property name="target.path" value="build" />  
    <property name="target.root.path" value="${target.path}/ROOT" />  
    <property name="target.root.classes" value="${target.root.path}/WEB-INF/classes" />

    <property name="webroot.path" value="WebRoot" />  
    <property name="compileSrc" value="src" />  
    <property name="compileDest" value="${target.root.classes}" />  
    <property name="env.dir" value="env" />  
    <property name="env.cfg" value="${env.dir}/${profile}" />  
    <tstamp>  
      <format property="now" pattern="yyyyMMddHHmmss" />  
    </tstamp>  
    <path id="compileClassPath">  
      <fileset dir="${webroot.path}/WEB-INF/lib">  
        <include name="*.jar" />  
      </fileset>  
    </path>  
    <target name="prompt" description="show prompt information">  
      <echo>Please choose task: clean, compile, war, deploy. ${line.separator}  
        Example: ${line.separator}  
        ant compile ${line.separator}  
        ant -Dprofile=test deploy       
      </echo>  
    </target>  
    <target name="clean">  
      <delete dir="${target.path}" />  
      <mkdir dir="${target.path}" />  
      <delete dir="${compileDest}" />  
      <mkdir dir="${compileDest}" />  
      <delete dir="${target.root.classes}" />  
      <mkdir dir="${target.root.classes}" />  
      <echo>cleaned for ${compileDest}, ${target.root.path},${target.path}/*.war</echo>  
    </target>  
    <target name="compile" depends="clean,testIfProfileSet">  
      <echo>starting compile the source from ${compileSrc}</echo>  
      <javac srcdir="${compileSrc}" includeantruntime="false" fork="true"   
        memoryinitialsize="256m" memorymaximumsize="512m" destdir="${compileDest}"  
        classpathref="compileClassPath" encoding="${source.encoding}"  
        source="${javac.version}" target="${javac.version}"  
        debug="true" verbose="false" optimize="true" deprecation="false">  
      </javac>  
      <copy todir="${compileDest}">  
        <fileset dir="${compileSrc}" excludes="**/*.svn,**/*.java" />
      </copy>  
      <echo>compiled classes copied to ${compileDest}</echo>  
      <copy todir="${target.root.path}">
        <fileset dir="${webroot.path}" excludes="**/*.svn,**/*.java" />
      </copy>  
      <echo>copied to ${webroot.path} to ${compileDest}</echo>  
      <echo>compile finished</echo>  
    </target>  
    <target name="testIfProfileSet">  
      <echo>ant param profile: ${profile}</echo>  
      <condition property="isProfileSet">  
        <!-- <isset property="${profile}" /> -->  
        <isset property="${profile}" /> -->  
        <or>  
          <equals arg1="${profile}" arg2="dev" />  
          <equals arg1="${profile}" arg2="test" />

        </or>  
      </condition>  
      <antcall target="profileProvided">  
      </antcall>  
      <antcall target="noProfile">  
      </antcall>  
    </target>

    <target name="profileProvided" if="isProfileSet">  
      <copy todir="${target.root.classes}">  
        <fileset dir="${env.cfg}" />  
      </copy>  
      <echo>copied config files ${env.cfg} to ${target.root.classes}</echo>  
    </target>  
    <target name="noProfile" if="isProfileSet">  
      <echo>ant param profile is none, use default config files</echo>  
    </target>  
    <target name="war" depends="compile">  
      <jar jarfile="${target.path}/${project.name}-${profile}${now}.war">  
        <fileset dir="${target.root.path}">  
          <include name="**/*" />
          <exclude name="**/*.fla" />
          <exclude name="**/*.mp3" />
          <exclude name="**/*.as" />
          <exclude name="**/*.bak" />
          <exclude name="**/*.swd" />
          <exclude name="**/*.db" />
        </fileset>  
      </jar>  
    </target>  
    <target name="deploy" depends="compile">  
      <delete dir="${deploy.dir}" />    
      <mkdir dir="${deploy.dir}" />  
      <copy todir="${deploy.dir}">  
        <fileset dir="${target.root.path}">  
        </fileset>  
      </copy>  
      <echo>deploy ${target.root.path} to ${deploy.dir}</echo>  
    </target>   
</project>