Checking that the documentation is up to date
<?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:anoncvs@cvs.apache.org:/home/cvspublic" /> <!-- CVSROOT for the MySQL connector --> <property name="mysql.cvsroot" value=":pserver:anonymous@cvs.sourceforge.net:/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>