<project name="Catalog Servlet Example Deploy" default="redeploy" basedir=".">
    <!--
 ==================== Properties ==================================== 
-->
    <property name="app.name" value="web"/>
    <property name="app.path" value="/${app.name}"/>
    <property name="doc.home" value="${basedir}/doc"/>
    <property name="source.home" value="${basedir}/src"/>
    <property name="deploy.home" value="${basedir}/deploy"/>
    <property name="deploy.webinf" value="${deploy.home}/WEB-INF"/>
    <property name="deploy.classes" value="${deploy.webinf}/classes"/>
    <property name="deploy.lib" value="${deploy.webinf}/lib"/>
    <property name="dist.home" value="${basedir}/dist"/>
    <property name="class.home" value="${basedir}/bin"/>
    <property name="web.home" value="${basedir}/web"/>
    <!--
 ================== Custom Ant Task Definitions ======================= 
-->
    <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
    <taskdef name="list" classname="org.apache.catalina.ant.ListTask"/>
    <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"/>
    <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/>
   <!--
 ==================== Deploy Target ================================== 
-->
    <target name="deploy"
            depends="prepare,copyfiles"
            description="deploy application to servlet container"
     >
        <deploy url="${manager.url}"
                username="${manager.username}"
                password="${manager.password}"
                path="${app.path}"            
                localWar="file://${deploy.home}"
         />
    </target>
    <!--
 ==================== Copyfiles Target ================================== 
-->
    <target name="copyfiles">
        <copy todir="${deploy.home}">
            <fileset dir="${web.home}"/>
        </copy>
        <copy todir="${deploy.classes}">
            <fileset dir="${class.home}"/>
        </copy>
    </target>
    <!--
 ==================== Prepare Target ================================== 
-->
    <target name="prepare">
        <mkdir dir="${deploy.home}"/>
        <mkdir dir="${deploy.webinf}"/>
        <mkdir dir="${deploy.classes}"/>
    </target>
    <!--
 ================== Reload Target ======================= 
-->
    <target name="reload"
            description="reload application"
     >
        <reload url="${manager.url}"
                username="${manager.username}"
                password="${manager.password}"
                path="${app.path}"  
        	
         />
    </target>
    <!--
 ================== Redeploy Target ======================= 
-->
    <target name="redeploy" depends="remove, deploy, clean"
            description="redeploy application"
     >
    </target>
    <!--
 ==================== Remove Target =================================== 
-->
    <target name="remove" description="Remove application on servlet container">
        <undeploy url="${manager.url}"
                  username="${manager.username}"
                  password="${manager.password}"
                  path="${app.path}"
         />
    </target>
    <!--
 ====================== List Target =================================== 
-->
    <target name="list"
            description="List installed applications on servlet container"
     >  	
    	<list url="${manager.url}"
              username="${manager.username}"
              password="${manager.password}"
         />
    </target>
    <!--
 ==================== Clean Target ==================================== 
-->
    <target name="clean" description="Delete old build and dist directories">
        <delete dir="${deploy.home}"/>
        <delete dir="${dist.home}"/>
    </target>
    <!--
 ==================== All Target ====================================== 
-->
    <target name="all"
            depends="remove,clean,deploy"
            description="Clean build and dist directories, then compile"
     />
    <!--
 ==================== Dist Target ===================================== 
-->
    <target name="dist"
            depends="prepare,copyfiles"
            description="Create binary distribution"
     >
        <mkdir dir="${dist.home}"/>
        <jar jarfile="${dist.home}/${app.name}.war"
             basedir="${deploy.home}"
         />
    </target>
    <!--
 ==================== Javadoc Target ================================== 
-->
    <target name="javadoc"
            description="Create Javadoc API documentation"
     >
        <path id="compile.classpath">
            <pathelement location="${catalina.home}/common/classes"/>
            <fileset dir="${catalina.home}/common/endorsed">
                <include name="*.jar"/>
            </fileset>
            <fileset dir="${catalina.home}/common/lib">
                <include name="*.jar"/>
            </fileset>
            <pathelement location="${catalina.home}/shared/classes"/>
            <fileset dir="${catalina.home}/shared/lib">
                <include name="*.jar"/>
            </fileset>
        </path>
        <mkdir dir="${doc.home}"/>
        <javadoc sourcepath="${source.home}"
                 destdir="${doc.home}"
                 packagenames="*"
         >
            <classpath refid="compile.classpath"/>
        </javadoc>
    </target>
</project>

