|  | | Generate Javadocs for the application, using offline package-list files |  
| 
 |  
   
  
 
<?xml version="1.0"?> 
 
<project name="Example Application Build" default="build-both" basedir="."> 
   
  <property file="build.properties"/> 
 
  <!-- CVSROOT for the JSTL --> 
  <property name="cvsroot"  
            value=":pserver:[email protected]:/home/cvspublic" /> 
 
  <!-- CVSROOT for the MySQL connector --> 
  <property name="mysql.cvsroot"  
            value=":pserver:[email protected]:/cvsroot/mmmysql" /> 
 
  <!-- The master build classpath          -->  
  <path id="build.classpath"> 
    <pathelement location="${servlet24.jar}"/> 
    <pathelement location="${jsp20.jar}"/> 
    <pathelement location="${mysql.jar}"/> 
    <pathelement path="${appName.jar}"/> 
  </path> 
 
  <!-- Javadoc file sets                   -->  
  <fileset id="javadoc" dir="${src}"> 
    <exclude name="*/conf/**"/> 
    <exclude name="*/docs/*"/> 
    <include name="shared/**"/> 
    <include name="stand-alone/**"/> 
    <include name="web/java/**"/> 
  </fileset>   
 
  <!-- Properties and pattern sets for the packaging targets -->  
 
  <!-- The value of each property in this section is the setting --> 
  <!-- for the 'dir' attribute of file sets and tar file sets -->  
 
  <!-- Property and pattern set for the documentation --> 
  <property name="docs.all.dir" value="${build}"/> 
  <!-- Tar file sets cannot use file sets, so we must use a pattern set --> 
  <patternset id="docs.all"> 
    <include name="docs/**"/> 
  </patternset> 
 
  <!-- Property and pattern set for the license and README --> 
  <property name="docs.misc.dir" value="${src}/shared/docs"/> 
  <!-- Tar file sets cannot use file sets, so we must use a pattern set --> 
  <patternset id="docs.misc"> 
    <include name="README"/> 
    <include name="LICENSE"/> 
  </patternset> 
   
  <!-- Property and pattern set for the source, --> 
  <!-- build.xml, and build.properties --> 
  <property name="src.files.dir" value="."/> 
  <!-- Tar file sets cannot use file sets, so we must use a pattern set --> 
  <patternset id="src.files"> 
    <include name="${src}/**"/> 
    <include name="build.*"/> 
  </patternset> 
 
  <!-- Pattern set for the binary JAR --> 
  <!-- Nothing else is needed because the directory that contains it --> 
  <!-- is already in the ${dist} property and it's used in a zip file set --> 
  <!-- as well as a tar file set -->  
  <patternset id="bin.jar"> 
    <include name="*.jar"/> 
  </patternset> 
 
  <!-- Pattern set for the binary WAR --> 
  <!-- Nothing else is needed because the directory that contains it --> 
  <!-- is already in the ${dist} property and it's used in a zip file set --> 
  <!-- as well as a tar file set -->  
  <patternset id="bin.war"> 
    <include name="*.war"/> 
  </patternset> 
 
  <!-- Initialization target               -->  
 
  <!-- Create the working directories --> 
  <target name="dir" description="Create the working directories"> 
    <echo message="Creating the working directories"/> 
    <mkdir dir="${build.stand-alone.root}"/> 
    <mkdir dir="${build.web.classes}"/> 
    <mkdir dir="${dist}"/> 
    <mkdir dir="${lib}"/> 
  </target> 
 
  <!-- CVS and build tasks for the JSTL and MySQL connector --> 
 
  <!-- Update or check out required sources from CVS for the JSTL --> 
  <target name="checkout-jstl" depends="dir"  
          description="Update or check out required sources 
                       from CVS for the JSTL"> 
 
    <echo message="Checking out the required JSTL sources from CVS"/> 
 
    <cvs cvsroot="${cvsroot}" quiet="true" 
         command="checkout -P ${jstl.build}"  
         dest="${build}" compression="true" /> 
 
  </target> 
  <!-- Update or check out required sources from CVS for the MySQL connector --> 
  <target name="checkout-mysql-connector" depends="dir"  
          description="Update or check out required sources 
          from CVS for the MySQL connector"> 
 
    <echo message="Checking out the required sources from CVS for the MySQL connector" /> 
 
    <cvs cvsroot="${mysql.cvsroot}" quiet="true" 
         command="checkout" package="${mysql.build}" 
         dest="${build}" compression="true" /> 
 
  </target> 
 
  <!-- Build the JSTL from source --> 
  <target name="build-jstl" depends="checkout-jstl"  
          description="Build the JSTL from source"> 
    <echo message="Building the JSTL from source"/> 
 
    <ant antfile="build.xml" dir="${build}/${jstl.build}"/> 
 
    <copy todir="${lib}"> 
      <fileset dir="${build}/${jstl.build}/${build}/lib"> 
        <include name="*.jar"/> 
      </fileset> 
    </copy> 
  </target> 
 
  <!-- Build the MySQL connector from source --> 
  <target name="build-mysql-connector" depends="checkout-mysql-connector"  
          description="Build the MySQL connector from source"> 
    <echo message="Building the MySQL connector from source"/> 
 
    <!-- The MySQL connector file needs this directory to exist --> 
    <!-- Therefore we need to create it --> 
    <mkdir dir="${build}/dist-mysql-jdbc"/> 
 
    <ant antfile="build.xml" dir="${build}/${mysql.build}"/> 
 
    <copy tofile="${mysql.jar}"> 
      <fileset dir="${build}/build-mysql-jdbc"> 
        <include name="mysql-connector*/*.jar"/> 
      </fileset> 
    </copy> 
  </target> 
 
  <!-- Compile the stand-alone application --> 
  <target name="compile-stand-alone" depends="dir"  
          description="Compile stand-alone application"> 
    <echo message="Compiling the stand-alone application"/> 
    <javac srcdir="${src.shared.java}" destdir="${build.stand-alone.root}"/> 
    <javac srcdir="${src.stand-alone.java}"  
           destdir="${build.stand-alone.root}"/>   
  </target> 
 
<!-- 
  <target name="stand-alone-complete"  
          description="Compile stand-alone application,  
          using CVS version of the MySQL connector"> 
    <echo message="Compiling stand-alone application, using CVS versions of the MySQL connector"/> 
    <antcall target="build-mysql-connector"/> 
    <antcall target="package-stand-alone"/> 
  </target> 
 
  <target name="stand-alone-complete"  
          depends="build-mysql-connector, package-stand-alone"  
          description="Compile stand-alone application,  
          using CVS version of the MySQL connector"> 
    <echo message="Compiling stand-alone application, using CVS versions of the MySQL connector"/> 
  </target>  
--> 
 
  <target name="stand-alone-complete"  
          depends="build-mysql-connector, package-stand-alone"  
          description="Compile stand-alone application,  
                       using CVS version of the MySQL connector"> 
    <echo message="Compiling stand-alone application, using CVS versions of the MySQL connector"/> 
  </target> 
 
  <!-- Package the stand-alone application --> 
  <target name="package-stand-alone" depends="compile-stand-alone"  
          description="Package the stand-alone application"> 
    <echo message="Creating the stand-alone JAR file"/> 
    <copy file="${database.properties}" todir="${build.stand-alone.root}"/> 
    <jar destfile="${appName.jar}" basedir="${build.stand-alone.root}"/> 
  </target> 
 
  <!-- Compile the web application --> 
  <target name="compile-web" depends="dir" description="Compile web application"> 
    <echo message="Compiling the web application"/> 
    <javac destdir="${build.web.classes}"> 
      <src path="${src.shared.java}"/> 
    </javac> 
    <javac srcdir="${src.web.java}" destdir="${build.web.classes}"> 
      <classpath refid="build.classpath"/> 
    </javac> 
  </target> 
 
<!-- 
  <target name="web-complete"  
          description="Compile web application,  
                       using CVS versions of the MySQL connector and the JSTL"> 
    <echo message="Compiling web application, using CVS versions of the MySQL connector and the JSTL"/> 
    <antcall target="build-mysql-connector"/> 
    <antcall target="build-jstl"/> 
    <antcall target="package-web"/> 
  </target> 
 
  <target name="web-complete"  
          depends="build-mysql-connector, build-jstl, package-web"  
          description="Compile web application,  
                       using CVS versions of the MySQL connector and the JSTL"> 
    <echo message="Compiled web application, using CVS versions of the MySQL connector and the JSTL"/> 
  </target> 
--> 
 
  <target name="web-complete"  
          depends="build-mysql-connector, build-jstl, package-web"  
          description="Compile web application,  
                       using CVS versions of the MySQL connector and the JSTL"> 
    <echo message="Compiling web application, using CVS versions of the MySQL connector and the JSTL"/> 
  </target> 
 
  <!-- Copy the web pages and configuration files --> 
  <target name="copy-web" depends="compile-web" description="Copy the web files"> 
    <echo message="Copying the web pages and configuration files"/> 
    <copy todir="${build.web.root}"> 
      <fileset dir="${src.web.pages}"/> 
    </copy> 
    <!-- Copy the tags --> 
    <copy todir="${build.web.tags}"> 
      <fileset dir="${src.web.tags}"/> 
    </copy> 
    <copy todir="${build.web.web-inf}"> 
      <fileset dir="${src.web.conf}"> 
        <include name="*.tld"/> 
      </fileset> 
    </copy> 
    <!-- Copy the JAR files --> 
    <copy todir="${build.web.lib}"> 
      <fileset dir="${lib}"/> 
    </copy> 
    <!-- Copy the properties file --> 
    <copy file="${database.properties}" todir="${build.web.classes}"/> 
    <!-- No need to copy web.xml, as the WAR task does this for us --> 
  </target> 
 
  <!-- Build the WAR file --> 
<!-- 
  <target name="package-web" depends="copy-web" description="Build the WAR"> 
    <echo message="Building the WAR file"/>  
    <war destfile="${appName.war}" basedir="${build.web.root}"  
         webxml="${src.web.conf}/web.xml"/> 
  </target> 
--> 
 
  <!-- Build the WAR file in one step --> 
  <target name="package-web" depends="compile-web"  
          description="Build the WAR file in one step"> 
    <echo message="Building the WAR file in one step"/>  
    <war destfile="${appName.war}" basedir="${src.web.pages}"  
         webxml="${src.web.conf}/web.xml"> 
      <lib dir="${lib}"/> 
      <classes dir="${build.web.root}"/> 
      <zipfileset dir="${src.web.tags}" prefix="WEB-INF/tags"/> 
      <zipfileset file="${database.properties}" prefix="WEB-INF/classes"/> 
      <zipfileset dir="${src.web.conf}" prefix="WEB-INF"> 
        <include name="*.tld"/> 
      </zipfileset> 
    </war> 
  </target> 
 
  <!-- Targets that work with both applications --> 
<!-- 
  <target name="build-both"  
          description="Compile both applications,  
                       without CVS versions of the MySQL connector and the JSTL"> 
    <echo message="Compiling both applications, without CVS versions of the MySQL connector and the JSTL"/> 
    <antcall target="package-stand-alone"/> 
    <antcall target="package-web"/> 
  </target> 
 
  <target name="build-all"  
          description="Compile both applications,  
                       using CVS versions of the MySQL connector and the JSTL"> 
    <echo message="Compiling both applications, using CVS versions of the MySQL connector and the JSTL"/> 
    <antcall target="stand-alone-complete"/> 
    <antcall target="web-complete"/> 
  </target> 
--> 
 
  <target name="build-both"  
          depends="package-stand-alone, package-web"  
          description="Compile both applications,  
                       without CVS versions of the MySQL connector and the JSTL"> 
    <echo message="Compiled both applications, without CVS versions of the MySQL connector and the JSTL"/> 
  </target> 
 
  <target name="build-all"  
          depends="stand-alone-complete, web-complete"  
          description="Compile both applications,  
                       using CVS versions of the MySQL connector and the JSTL"> 
    <echo message="Compiled both applications, using CVS versions of the MySQL connector and the JSTL"/> 
  </target> 
 
 
  <!-- Download the servlet JAR --> 
  <target name="download-servlet-jar" depends="dir"  
          description="Download the servlet JAR"> 
    <echo message="Downloading the servlet JAR"/> 
 
    <get src="http://www.ibiblio.org/maven/servletapi/jars/servletapi-2.4.jar" 
         dest="${servlet24.jar}" 
         verbose="true"/> 
  </target> 
 
  <!-- Download the JSP JAR --> 
  <target name="download-jsp-jar" depends="dir"  
          description="Download the JSP JAR"> 
    <echo message="Downloading the JSP JAR"/> 
 
    <get src="http://www.ibiblio.org/maven/jspapi/jars/jsp-api-2.0.jar" 
         dest="${jsp20.jar}" 
         verbose="true"/> 
  </target> 
 
  <!-- Building the documentation bundle        --> 
  <!-- Checking that the documentation is up to date --> 
  <target name="check-docs"  
          description="Check that the documentation is up to date"> 
    <echo message="Checking that the documentation is up to date"/> 
    <condition property="docs.notRequired"> 
      <and> 
        <uptodate targetfile="${dist}/${appName}-${package.docs}.zip"> 
          <srcfiles dir="${src}" includes="**"/> 
        </uptodate> 
        <uptodate targetfile="${dist}/${appName}-${package.docs}.tar.gz"> 
          <srcfiles dir="${src}" includes="**"/> 
        </uptodate> 
      </and> 
    </condition> 
  </target>   
 
  <!-- Generate Javadocs for the application --> 
  <target name="javadocs" depends="dir,check-docs"  
          description="Generate Javadocs for the application"  
          unless="docs.notRequired"> 
    <echo message="Generating Javadocs for the application"/> 
    <javadoc destdir="${docs}/api" windowtitle="${javadoc.windowtitle}"> 
      <fileset refid="javadoc"/> 
      <doctitle> 
        ${javadoc.doctitle} 
      </doctitle> 
      <classpath refid="build.classpath"/> 
      <link href="http://java.sun.com/j2se/${javadoc.j2se.version}/docs/api"/>   
      <link href="http://java.sun.com/j2ee/${javadoc.j2ee.version}/docs/api"/>  
    </javadoc> 
  </target> 
 
   <!-- Generate Javadocs for the application,  
        using offline package-list files --> 
  <target name="javadocs-offline" depends="dir,check-docs" 
          description="Generate Javadocs for the application,  
                       using offline package-list files" 
          unless="docs.notRequired"> 
    <echo message="Generating Javadocs for the application,  
                   using offline package-list files"/> 
    <javadoc destdir="${docs}/api" windowtitle="${javadoc.windowtitle}"> 
      <fileset refid="javadoc"/> 
      <doctitle> 
        ${javadoc.doctitle} 
      </doctitle> 
      <classpath refid="build.classpath"/> 
<!-- 
      <link href="http://java.sun.com/j2se/${javadoc.j2se.version}/docs/api"  
            offline="true" packagelistLoc="${javadoc.j2se.offline}"/>   
      <link href="http://java.sun.com/j2ee/${javadoc.j2ee.version}/docs/api" 
            offline="true" packagelistLoc="${javadoc.j2ee.offline}"/>  
--> 
      <link href="${javadoc.j2se.offline}" resolveLink="true"/>   
      <link href="${javadoc.j2ee.offline}" resolveLink="true"/>  
    </javadoc> 
  </target> 
 
  <!-- Assemble the documentation --> 
  <target name="docs" depends="javadocs"  
          description="Assemble the documentation" unless="docs.notRequired"> 
    <echo message="Assembling the documentation"/> 
    <copy todir="${docs}"> 
      <fileset dir="${src.shared.docs}"> 
        <include name="*.html"/> 
      </fileset> 
    </copy> 
    <copy todir="${docs}/stand-alone"> 
      <fileset dir="${src.stand-alone.docs}"> 
        <include name="*.html"/> 
      </fileset> 
    </copy> 
    <copy todir="${docs}/web"> 
      <fileset dir="${src.web.docs}"> 
        <include name="*.html"/> 
      </fileset> 
    </copy> 
  </target> 
 
  <!-- Zip the distribution                     --> 
  <!-- Zip the documentation --> 
  <target name="zip-docs" depends="docs" description="Zip the documentation"> 
    <echo message="Zipping the documentation"/> 
    <zip destfile="${dist}/${appName}-${package.docs}.zip"> 
      <!-- Include the documentation --> 
      <fileset dir="${docs.all.dir}"> 
        <patternset refid="docs.all"/> 
      </fileset> 
      <!-- Include the license and the README --> 
      <fileset dir="${docs.misc.dir}"> 
        <patternset refid="docs.misc"/> 
      </fileset> 
    </zip>  
    <checksum file="${dist}/${appName}-${package.docs}.zip"  
              forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-${package.docs}.zip" forceOverwrite="true"   
              algorithm="SHA1"/> 
  </target> 
 
  <!-- Zip the source and documentation together --> 
  <target name="zip-src" depends="zip-docs"  
          description="Zip the source and documentation together"> 
    <echo message="Zipping the source and documentation together"/> 
    <zip destfile="${dist}/${appName}-src.zip"> 
      <!-- Include the source code and the build files --> 
      <zipfileset src="${dist}/${appName}-${package.docs}.zip"/> 
      <fileset dir="${src.files.dir}"> 
        <patternset refid="src.files"/> 
      </fileset> 
    </zip>  
    <checksum file="${dist}/${appName}-src.zip" forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-src.zip" forceOverwrite="true"  
              algorithm="SHA1"/> 
  </target> 
 
  <!-- Zip the binary stand-alone distribution with the documentation --> 
  <target name="zip-bin-stand-alone" depends="package-stand-alone,zip-docs"  
          description="Zip the binary stand-alone distribution  
                       with the documentation"> 
    <echo message="Zipping the binary stand-alone distribution with the documentation"/> 
    <zip destfile="${dist}/${appName}-${package.stand-alone}-bin.zip"> 
      <!-- Include the documentation --> 
      <zipfileset src="${dist}/${appName}-${package.docs}.zip"/> 
      <!-- Include the binary JAR files --> 
      <zipfileset dir="${dist}" prefix="lib"> 
        <patternset refid="bin.jar"/> 
      </zipfileset> 
      <fileset dir="."> 
        <include name="${mysql.jar}"/> 
      </fileset> 
    </zip>  
    <checksum file="${dist}/${appName}-${package.stand-alone}-bin.zip"  
              forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-${package.stand-alone}-bin.zip"  
              forceOverwrite="true" algorithm="SHA1"/> 
  </target> 
 
  <!-- Zip the binary web distribution with the documentation --> 
  <target name="zip-bin-web" depends="package-web,zip-docs"  
          description="Zip the binary web distribution with the documentation"> 
    <echo message="Zipping the binary web distribution with the documentation"/> 
    <zip destfile="${dist}/${appName}-${package.web}-bin.zip"> 
      <!-- Include the documentation --> 
      <zipfileset src="${dist}/${appName}-${package.docs}.zip"/> 
      <!-- Include the binary WAR files --> 
      <fileset dir="${dist}"> 
        <patternset refid="bin.war"/> 
      </fileset> 
    </zip>  
    <checksum file="${dist}/${appName}-${package.web}-bin.zip"  
              forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-${package.web}-bin.zip"  
              forceOverwrite="true" algorithm="SHA1"/> 
  </target> 
 
  <!-- Zip the binary distribution with the documentation --> 
  <target name="zip-bin" depends="zip-bin-stand-alone,zip-bin-web"  
          description="Zip the binary distribution with the documentation"> 
    <echo message="Zipping the binary distribution with the documentation"/> 
    <zip destfile="${dist}/${appName}-bin.zip"  
         duplicate="preserve" update="true"> 
      <zipgroupfileset dir="${dist}" includes="*.zip"/> 
    </zip> 
    <checksum file="${dist}/${appName}-bin.zip" forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-bin.zip" forceOverwrite="true"  
              algorithm="SHA1"/> 
  </target> 
 
  <!-- Zip the binary and source distributions --> 
  <target name="zip-all" depends="zip-src,zip-bin"  
          description="Zip the binary and source distributions"> 
    <echo message="Zipped the binary and source distributions"/> 
  </target> 
 
  <!-- Tar and gz the distribution              --> 
 
  <!-- Tar the documentation --> 
  <target name="tar-docs" depends="docs" description="Tar the documentation"> 
    <echo message="Tarring the documentation"/> 
    <tar destfile="${dist}/${appName}-${package.docs}.tar.gz" compression="gzip"> 
      <!-- Include the documentation --> 
      <tarfileset dir="${docs.all.dir}"> 
        <patternset refid="docs.all"/> 
      </tarfileset> 
      <!-- Include the license and the README --> 
      <tarfileset dir="${docs.misc.dir}"> 
        <patternset refid="docs.misc"/> 
      </tarfileset> 
    </tar>  
    <checksum file="${dist}/${appName}-${package.docs}.tar.gz"  
              forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-${package.docs}.tar.gz"  
              forceOverwrite="true" algorithm="SHA1"/> 
  </target> 
 
  <!-- Tar the source and documentation together --> 
  <target name="tar-src" depends="tar-docs" 
          description="Tar the documentation"> 
    <echo message="Tarring the documentation"/> 
    <tar destfile="${dist}/${appName}-src.tar.gz" compression="gzip"> 
      <!-- Include the documentation --> 
      <tarfileset dir="${docs.all.dir}"> 
        <patternset refid="docs.all"/> 
      </tarfileset> 
      <!-- Include the license and the README --> 
      <tarfileset dir="${docs.misc.dir}"> 
        <patternset refid="docs.misc"/> 
      </tarfileset> 
      <!-- Include the source code and the build files --> 
      <tarfileset dir="${src.files.dir}"> 
        <patternset refid="src.files"/> 
      </tarfileset> 
    </tar>  
    <checksum file="${dist}/${appName}-src.tar.gz" forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-src.tar.gz" forceOverwrite="true"  
              algorithm="SHA1"/> 
  </target> 
 
  <!-- Tar the binary stand-alone distribution with the documentation --> 
  <target name="tar-bin-stand-alone" depends="package-stand-alone,tar-docs"  
          description="Tar the binary stand-alone distribution  
                       with the documentation"> 
    <echo message="Tarring the binary stand-alone distribution with the documentation"/> 
    <tar destfile="${dist}/${appName}-${package.stand-alone}-bin.tar.gz"  
         compression="gzip"> 
      <!-- Include the documentation --> 
      <tarfileset dir="${docs.all.dir}"> 
        <patternset refid="docs.all"/> 
      </tarfileset> 
      <!-- Include the license and the README --> 
      <tarfileset dir="${docs.misc.dir}"> 
        <patternset refid="docs.misc"/> 
      </tarfileset> 
      <!-- Include the binary JAR files --> 
      <tarfileset dir="${dist}" prefix="lib"> 
        <patternset refid="bin.jar"/> 
      </tarfileset> 
      <tarfileset dir="."> 
        <include name="${mysql.jar}"/> 
      </tarfileset>    </tar>  
    <checksum file="${dist}/${appName}-${package.stand-alone}-bin.tar.gz"  
              forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-${package.stand-alone}-bin.tar.gz"  
              forceOverwrite="true" algorithm="SHA1"/> 
  </target> 
 
  <!-- Tar the binary web distribution with the documentation --> 
  <target name="tar-bin-web" depends="package-web,tar-docs"  
          description="Tar the binary web distribution with the documentation"> 
    <echo message="Tarring the binary web distribution with the documentation"/> 
    <tar destfile="${dist}/${appName}-${package.web}-bin.tar.gz"  
         compression="gzip"> 
      <!-- Include the documentation --> 
      <tarfileset dir="${docs.all.dir}"> 
        <patternset refid="docs.all"/> 
      </tarfileset> 
      <!-- Include the license and the README --> 
      <tarfileset dir="${docs.misc.dir}"> 
        <patternset refid="docs.misc"/> 
      </tarfileset> 
      <!-- Include the binary WAR files --> 
      <tarfileset dir="${dist}"> 
        <patternset refid="bin.war"/> 
      </tarfileset> 
    </tar>  
    <checksum file="${dist}/${appName}-${package.web}-bin.tar.gz"  
              forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-${package.web}-bin.tar.gz"  
              forceOverwrite="true" algorithm="SHA1"/> 
  </target> 
 
  <!-- Tar the binary distribution with the documentation --> 
  <target name="tar-bin" depends="tar-bin-stand-alone,tar-bin-web"  
          description="Tar the binary distribution with the documentation"> 
    <echo message="Tarring the binary distribution with the documentation"/> 
    <tar destfile="${dist}/${appName}-bin.tar.gz" compression="gzip"> 
      <!-- Include the documentation --> 
      <tarfileset dir="${docs.all.dir}"> 
        <patternset refid="docs.all"/> 
      </tarfileset> 
      <!-- Include the license and the README --> 
      <tarfileset dir="${docs.misc.dir}"> 
        <patternset refid="docs.misc"/> 
      </tarfileset> 
      <!-- Include the source code and the build files --> 
      <tarfileset dir="${src.files.dir}"> 
        <patternset refid="src.files"/> 
      </tarfileset> 
      <!-- Include the binary JAR files --> 
      <tarfileset dir="${dist}" prefix="lib"> 
        <patternset refid="bin.jar"/> 
      </tarfileset> 
      <tarfileset dir="."> 
        <include name="${mysql.jar}"/> 
      </tarfileset> 
      <!-- Include the binary WAR files --> 
      <tarfileset dir="${dist}"> 
        <patternset refid="bin.war"/> 
      </tarfileset> 
    </tar> 
    <checksum file="${dist}/${appName}-bin.tar.gz" forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-bin.tar.gz" forceOverwrite="true"  
              algorithm="SHA1"/> 
  </target> 
 
  <!-- Tasks that use the zip files to construct tar files --> 
  <!-- Tar the binary web distribution with the documentation --> 
  <target name="tar-bin-web-new" depends="package-web,tar-docs,zip-bin-web"  
          description="Tar the binary web distribution with the documentation"> 
    <echo message="Tarring the binary web distribution with the documentation"/> 
    <unzip src="${dist}/${appName}-${package.web}-bin.zip" dest="${tmp}/web"/> 
    <tar destfile="${dist}/${appName}-${package.web}-bin.tar.gz"  
         compression="gzip"> 
      <tarfileset dir="${tmp}/web"/> 
    </tar> 
    <checksum file="${dist}/${appName}-${package.web}-bin.tar.gz"  
              forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-${package.web}-bin.tar.gz"  
              forceOverwrite="true" algorithm="SHA1"/> 
  </target> 
 
  <!-- Tar the binary distribution with the documentation --> 
  <target name="tar-bin-new"  
          depends="zip-bin,tar-bin-stand-alone,tar-bin-web-new" 
          description="Tar the binary distribution with the documentation"> 
    <echo message="Tarring the binary distribution with the documentation"/> 
    <delete failonerror="false" includeemptydirs="true"> 
      <fileset dir="${tmp}" includes="**"/> 
    </delete> 
    <unzip src="${dist}/${appName}-bin.zip" dest="${tmp}"/> 
    <tar destfile="${dist}/${appName}-bin.tar.gz" compression="gzip"> 
      <tarfileset dir="${tmp}"/> 
    </tar> 
    <checksum file="${dist}/${appName}-bin.tar.gz" forceOverwrite="true"/> 
    <checksum file="${dist}/${appName}-bin.tar.gz" forceOverwrite="true"  
              algorithm="SHA1"/> 
  </target> 
 
  <!-- Tar the binary and source distributions --> 
  <target name="tar-all" depends="tar-src,tar-bin"  
          description="Tar the binary and source distributions"> 
    <echo message="Tarred the binary and source distributions"/> 
  </target> 
 
  <!-- Distribution targets --> 
  <!-- FTP targets         --> 
 
  <!-- Place the documentation on FTP --> 
<!-- 
  <target name="ftp-docs" depends="zip-docs,tar-docs"  
          description="Place the documentation on FTP"> 
    <echo message="Placing the documentation on FTP"/> 
    <ftp server="${ftp.server}" 
         userid="${ftp.user}" 
         password="${ftp.password}" 
         remotedir="${ftp.src.dir}" 
         action="send"> 
      <fileset dir="${dist}"> 
        <include name="${appName}-${package.docs}.*"/> 
      </fileset> 
    </ftp> 
  </target> 
--> 
 
  <!-- Place the documentation on FTP --> 
  <target name="ftp-docs" depends="zip-docs,tar-docs"  
          description="Place the documentation on FTP"> 
    <echo message="Placing the documentation on FTP"/> 
    <ftp server="${ftp.server}" 
         userid="${ftp.user}" 
         password="${ftp.password}" 
         remotedir="${ftp.src.dir}" 
         action="send" 
         newer="true" 
         timediffauto="true"> 
      <fileset dir="${dist}"> 
        <include name="${appName}-${package.docs}.*"/> 
      </fileset> 
    </ftp> 
  </target> 
 
  <!-- Place the source code on FTP --> 
  <target name="ftp-src" depends="zip-src,tar-src"  
          description="Place the source code on FTP"> 
    <echo message="Placing the source code on FTP"/> 
    <ftp server="${ftp.server}" 
         userid="${ftp.user}" 
         password="${ftp.password}" 
         remotedir="${ftp.src.dir}" 
         action="send" 
         newer="true" 
         timediffauto="true"> 
      <fileset dir="${dist}"> 
        <include name="${appName}-src.*"/> 
      </fileset> 
    </ftp> 
  </target> 
 
  <!-- Place the binaries on FTP --> 
  <target name="ftp-bin" depends="zip-bin,tar-bin"  
          description="Place the binaries on FTP"> 
    <echo message="Placing the binaries on FTP"/> 
    <ftp server="${ftp.server}" 
         userid="${ftp.user}" 
         password="${ftp.password}" 
         remotedir="${ftp.bin.dir}" 
         action="send" 
         newer="true" 
         timediffauto="true"> 
      <fileset dir="${dist}"> 
        <include name="${appName}*bin*"/> 
      </fileset> 
    </ftp> 
  </target> 
 
  <!-- Place everything on FTP --> 
  <target name="ftp" description="Place everything on FTP"> 
    <echo message="Placing everything on FTP"/> 
    <antcall target="ftp-docs"/> 
    <antcall target="ftp-src"/> 
    <antcall target="ftp-bin"/> 
  </target> 
 
  <!-- Place everything on FTP --> 
<!-- 
  <target name="ftp" description="Place everything on FTP"> 
    <echo message="Placing everything on FTP"/> 
    <input message="Please enter your username." addproperty="ftp.user"/> 
    <input message="Please enter your password." addproperty="ftp.password"/> 
    <splash showduration="0"/> 
    <antcall target="ftp-docs"/> 
    <antcall target="ftp-src"/> 
    <antcall target="ftp-bin"/> 
  </target> 
--> 
 
  <!-- Email targets       --> 
 
  <!-- E-mail the documentation --> 
  <target name="email-docs" depends="zip-docs,tar-docs"  
          description="E-mailing the documentation"> 
    <echo message="E-mailing the documentation"/> 
    <mail from="${mail.from}" 
          tolist="${mail.tolist}" 
          mailhost="${mail.mailhost}" 
          user="${mail.user}" 
          password="${mail.password}" 
          subject="${mail.subject}"> 
      <message> 
        ${mail.message.docs} 
      </message> 
      <fileset dir="${dist}"> 
        <include name="${appName}-${package.docs}.*"/> 
      </fileset> 
    </mail> 
  </target> 
 
  <!-- Deploy the web application       --> 
 
  <!-- 1. Copy the expanded web application --> 
  <target name="deploy-copy-files" depends="copy-web"  
          description="Deploy the application by copying it to Tomcat"> 
    <echo message="Copying the expanded web application to CATALINA_HOME"/> 
    <property environment="env"/> 
    <copy todir="${build.web.web-inf}" file="${src.web.conf}/web.xml"/> 
    <copy todir="${env.CATALINA_HOME}/webapps/${appName}"> 
      <fileset dir="${build.web.root}"/> 
    </copy> 
  </target> 
 
  <!-- 2. Copy the WAR --> 
  <target name="deploy-copy-war" depends="package-web"  
          description="Deploy the WAR by copying it to Tomcat"> 
    <echo message="Copying the WAR to CATALINA_HOME"/> 
    <property environment="env"/> 
    <copy file="${appName.war}" todir="${env.CATALINA_HOME}/webapps"/> 
  </target> 
 
  <!-- 3. Deploy the web application using a context XML file --> 
  <target name="deploy-context" depends="copy-web"  
          description="Deploy the web application using a context XML file"> 
    <echo message="Deploying the web application using a context XML file"/> 
    <property environment="env"/> 
    <copy todir="${build.web.web-inf}" file="${src.web.conf}/web.xml"/> 
    <copy todir="${env.CATALINA_HOME}/conf/Catalina/localhost"  
          file="${src.web.conf}/${appName}.xml"/> 
  </target> 
 
  <!-- The deploy task for web applications on Tomcat --> 
  <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/> 
 
  <!-- 4. Deploy the WAR using the manager application --> 
  <target name="deploy" depends="package-web"  
          description="Hot deploy the application"> 
    <echo message="Deploying the WAR to Tomcat"/> 
    <deploy url="${manager.url}" 
            username="${manager.user}" 
            password="${manager.password}"   
            path="/${appName}" 
            war="file:${appName.war}" 
            update="true"/> 
  </target> 
 
  <!-- The undeploy task for web applications on Tomcat --> 
  <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/> 
 
  <!-- Undeploy the web application --> 
  <target name="undeploy" description="Undeploy the application"> 
    <echo message="Undeploying the WAR"/> 
    <undeploy url="${manager.url}" 
              username="${manager.user}"    
              password="${manager.password}" 
              path="/${appName}"/> 
  </target> 
 
  <target name="clean" description="Clean up the working directories"> 
    <echo message="Cleaning up"/> 
    <delete dir="${build}"/> 
  </target> 
 
</project> 
 
            
          
   |     
 
 |  
 |  
 AntExampleApplicationBuild2.zip( 132 k) |  
| Related examples in the same category |   
 |