Friday, October 04, 2013

Ant build script for a simple Java Web App

<?xml version="1.0"?> 
<project name="MyWebApp" default="dist" basedir=".">
 <property name="build" location="bin" />
 <property name="src" location="src" />
 <property name="dist" location="dist" />
 <property name="web" location="web" />
 <!-- Set up the 'env' prefix for environment variables -->
 <property environment="env" />
 <property name="lib" location="lib" />
 <property name="version.num" value="1.0" />
 <path id="classpath">
  <fileset dir="${lib}">
   <include name="**/*.jar" />
  </fileset>
  <fileset dir="${env.TOMCAT_HOME}/lib">
   <include name="**/*.jar" />
  </fileset>
 </path>
 
 <!-- get the source compile classpath in a printable forms -->
 <pathconvert pathsep="${line.separator}|   |-- " property="echo.path.compile" refid="classpath">
 </pathconvert>
 
 <!-- 0. Abort the build if TOMCAT_HOME is not set -->
 <target name="checkTomcatHome" unless="env.TOMCAT_HOME">
  <fail message="TOMCAT_HOME must be set!" />
 </target>
 
 <!-- 0. PRINT DEFAULTS. -->
 <target name="print_default_properties">
  <echo message="os.name:          ${os.name}" />
  <echo message="basdir:           ${basedir}" />
  <echo message="ant.file:         ${ant.file}" />
  <echo message="ant.project.name: ${ant.project.name}" />
  <echo message="ant.java.version: ${ant.java.version}" />
  <echo message="tomcat_base:      ${env.TOMCAT_HOME}" />
  <echo message="|-- compile classpath" />
  <echo message="|   |" />
  <echo message="|   |-- ${echo.path.compile}" />
 </target>
 
 <!-- 1. CLEAN the build generated artifacts. -->
 <target name="clean">
  <delete dir="${build}" />
  <delete dir="${dist}" />
 </target>
 <!-- 2. INITIALIZE the build. -->
 <target name="init" depends="print_default_properties, checkTomcatHome">
  <mkdir dir="${build}" />
 </target>
 <!-- 3. COMPILE the source files. -->
 <target name="compile" depends="init">
  <!-- Compile the java code -->
  <javac srcdir="${src}" destdir="${build}" classpathref="classpath" debug="on" />
 </target>
 <!-- 4. Create the DISTRIBUTION. -->
 <target name="dist" depends="compile">
  <mkdir dir="${dist}" />
 
  <copy todir="${build}">
   <fileset dir="${basedir}">
    <include name="*.properties" />
    <include name="*.xml" />
    <include name="*.xsd" />
   </fileset>
  </copy>
 
  <war destfile="${dist}/${ant.project.name}.war" webxml="${web}/WEB-INF/web.xml">
   <manifest>
    <attribute name="Built-By" value="${user.name}" />
    <attribute name="Implementation-Version" value="${version.num}" />
    <attribute name="Built-Date" value="${TODAY}" />
   </manifest>
   <fileset dir="${web}" />
   <lib dir="${lib}">
    <include name="**/*.jar"/>
   </lib>
   <classes dir="${build}" />
  </war>
 </target>
 
 <!-- 5. DEPLOY the generated WAR to tomcat. -->
 <target name="deploy" depends="dist">
  <echo>Deploying to ${env.TOMCAT_HOME}</echo>
  <copy todir="${env.TOMCAT_HOME}/webapps">
   <fileset dir="${dist}">
    <include name="${ant.project.name}.war" />
   </fileset>
  </copy>
 </target>
 
 <!-- HELP -->
 <target name="help">
  <echo message="help         - Displays help menu">
  </echo>
  
  <echo message="compile      - (default) Builds Java classes">
  </echo>
  <echo message="dist         - Creates web applicaiton .war ">
  </echo>
  <echo message="clean        - Delete built .class and .war files, leave directories">
  </echo>
  <echo message="deploy       - Deploy to local tomcat installation">
  </echo>
 </target>
</project>
</pre>

No comments: