| <!-- |
| General purpose build script for web applications and web services, |
| including enhanced support for deploying directly to a Tomcat 5 |
| based server. |
| |
| This build script assumes that the source code of your web application |
| is organized into the following subdirectories underneath the source |
| code directory from which you execute the build script: |
| |
| docs Static documentation files to be copied to |
| the "docs" subdirectory of your distribution. |
| |
| src Java source code (and associated resource files) |
| to be compiled to the "WEB-INF/classes" |
| subdirectory of your web applicaiton. |
| |
| web Static HTML, JSP, and other content (such as |
| image files), including the WEB-INF subdirectory |
| and its configuration file contents. |
| |
| $Id$ |
| --> |
| |
| |
| <!-- A "project" describes a set of targets that may be requested |
| when Ant is executed. The "default" attribute defines the |
| target which is executed if no specific target is requested, |
| and the "basedir" attribute defines the current working directory |
| from which Ant executes the requested task. This is normally |
| set to the current working directory. |
| --> |
| |
| <project name="My Project" default="compile" basedir="."> |
| |
| |
| |
| <!-- ===================== Property Definitions =========================== --> |
| |
| |
| <!-- |
| |
| Each of the following properties are used in the build script. |
| Values for these properties are set by the first place they are |
| defined, from the following list: |
| |
| * Definitions on the "ant" command line (ant -Dfoo=bar compile). |
| |
| * Definitions from a "build.properties" file in the top level |
| source directory of this application. |
| |
| * Definitions from a "build.properties" file in the developer's |
| home directory. |
| |
| * Default definitions in this build.xml file. |
| |
| You will note below that property values can be composed based on the |
| contents of previously defined properties. This is a powerful technique |
| that helps you minimize the number of changes required when your development |
| environment is modified. Note that property composition is allowed within |
| "build.properties" files as well as in the "build.xml" script. |
| |
| --> |
| |
| <property file="build.properties"/> |
| <property file="${user.home}/build.properties"/> |
| |
| |
| <!-- ==================== File and Directory Names ======================== --> |
| |
| |
| <!-- |
| |
| These properties generally define file and directory names (or paths) that |
| affect where the build process stores its outputs. |
| |
| app.name Base name of this application, used to |
| construct filenames and directories. |
| Defaults to "myapp". |
| |
| app.path Context path to which this application should be |
| deployed (defaults to "/" plus the value of the |
| "app.name" property). |
| |
| app.version Version number of this iteration of the application. |
| |
| build.home The directory into which the "prepare" and |
| "compile" targets will generate their output. |
| Defaults to "build". |
| |
| catalina.home The directory in which you have installed |
| a binary distribution of Tomcat 5. This will |
| be used by the "deploy" target. |
| |
| dist.home The name of the base directory in which |
| distribution files are created. |
| Defaults to "dist". |
| |
| manager.password The login password of a user that is assigned the |
| "manager" role (so that he or she can execute |
| commands via the "/manager" web application) |
| |
| manager.url The URL of the "/manager" web application on the |
| Tomcat installation to which we will deploy web |
| applications and web services. |
| |
| manager.username The login username of a user that is assigned the |
| "manager" role (so that he or she can execute |
| commands via the "/manager" web application) |
| |
| --> |
| |
| <property name="app.name" value="myapp"/> |
| <property name="app.path" value="/${app.name}"/> |
| <property name="app.version" value="0.1-dev"/> |
| <property name="build.home" value="${basedir}/build"/> |
| <property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! --> |
| <property name="dist.home" value="${basedir}/dist"/> |
| <property name="docs.home" value="${basedir}/docs"/> |
| <property name="manager.url" value="http://localhost:8080/manager"/> |
| <property name="src.home" value="${basedir}/src"/> |
| <property name="web.home" value="${basedir}/web"/> |
| |
| |
| <!-- ================== Custom Ant Task Definitions ======================= --> |
| |
| |
| <!-- |
| |
| These properties define custom tasks for the Ant build tool that interact |
| with the "/manager" web application installed with Tomcat 5. Before they |
| can be successfully utilized, you must perform the following steps: |
| |
| - Copy the file "server/lib/catalina-ant.jar" from your Tomcat 5 |
| installation into the "lib" directory of your Ant installation. |
| |
| - Create a "build.properties" file in your application's top-level |
| source directory (or your user login home directory) that defines |
| appropriate values for the "manager.password", "manager.url", and |
| "manager.username" properties described above. |
| |
| For more information about the Manager web application, and the functionality |
| of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>. |
| |
| --> |
| |
| <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"/> |
| |
| |
| <!-- ==================== Compilation Control Options ==================== --> |
| |
| <!-- |
| |
| These properties control option settings on the Javac compiler when it |
| is invoked using the <javac> task. |
| |
| compile.debug Should compilation include the debug option? |
| |
| compile.deprecation Should compilation include the deprecation option? |
| |
| compile.optimize Should compilation include the optimize option? |
| |
| --> |
| |
| <property name="compile.debug" value="true"/> |
| <property name="compile.deprecation" value="false"/> |
| <property name="compile.optimize" value="true"/> |
| |
| |
| |
| <!-- ==================== External Dependencies =========================== --> |
| |
| |
| <!-- |
| |
| Use property values to define the locations of external JAR files on which |
| your application will depend. In general, these values will be used for |
| two purposes: |
| * Inclusion on the classpath that is passed to the Javac compiler |
| * Being copied into the "/WEB-INF/lib" directory during execution |
| of the "deploy" target. |
| |
| Because we will automatically include all of the Java classes that Tomcat 5 |
| exposes to web applications, we will not need to explicitly list any of those |
| dependencies. You only need to worry about external dependencies for JAR |
| files that you are going to include inside your "/WEB-INF/lib" directory. |
| |
| --> |
| |
| <!-- Dummy external dependency --> |
| <!-- |
| <property name="foo.jar" |
| value="/path/to/foo.jar"/> |
| --> |
| |
| |
| <!-- ==================== Compilation Classpath =========================== --> |
| |
| <!-- |
| |
| Rather than relying on the CLASSPATH environment variable, Ant includes |
| features that makes it easy to dynamically construct the classpath you |
| need for each compilation. The example below constructs the compile |
| classpath to include the servlet.jar file, as well as the other components |
| that Tomcat makes available to web applications automatically, plus anything |
| that you explicitly added. |
| |
| --> |
| |
| <path id="compile.classpath"> |
| |
| <!-- Include all JAR files that will be included in /WEB-INF/lib --> |
| <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** --> |
| <!-- |
| <pathelement location="${foo.jar}"/> |
| --> |
| |
| <!-- Include all elements that Tomcat exposes to applications --> |
| <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> |
| |
| |
| |
| <!-- ==================== All Target ====================================== --> |
| |
| <!-- |
| |
| The "all" target is a shortcut for running the "clean" target followed |
| by the "compile" target, to force a complete recompile. |
| |
| --> |
| |
| <target name="all" depends="clean,compile" |
| description="Clean build and dist directories, then compile"/> |
| |
| |
| |
| <!-- ==================== Clean Target ==================================== --> |
| |
| <!-- |
| |
| The "clean" target deletes any previous "build" and "dist" directory, |
| so that you can be ensured the application can be built from scratch. |
| |
| --> |
| |
| <target name="clean" |
| description="Delete old build and dist directories"> |
| <delete dir="${build.home}"/> |
| <delete dir="${dist.home}"/> |
| </target> |
| |
| |
| |
| <!-- ==================== Compile Target ================================== --> |
| |
| <!-- |
| |
| The "compile" target transforms source files (from your "src" directory) |
| into object files in the appropriate location in the build directory. |
| This example assumes that you will be including your classes in an |
| unpacked directory hierarchy under "/WEB-INF/classes". |
| |
| --> |
| |
| <target name="compile" depends="prepare" |
| description="Compile Java sources"> |
| |
| <!-- Compile Java classes as necessary --> |
| <mkdir dir="${build.home}/WEB-INF/classes"/> |
| <javac srcdir="${src.home}" |
| destdir="${build.home}/WEB-INF/classes" |
| debug="${compile.debug}" |
| deprecation="${compile.deprecation}" |
| optimize="${compile.optimize}"> |
| <classpath refid="compile.classpath"/> |
| </javac> |
| |
| <!-- Copy application resources --> |
| <copy todir="${build.home}/WEB-INF/classes"> |
| <fileset dir="${src.home}" excludes="**/*.java"/> |
| </copy> |
| |
| </target> |
| |
| |
| |
| <!-- ==================== Dist Target ===================================== --> |
| |
| |
| <!-- |
| |
| The "dist" target creates a binary distribution of your application |
| in a directory structure ready to be archived in a tar.gz or zip file. |
| Note that this target depends on two others: |
| |
| * "compile" so that the entire web application (including external |
| dependencies) will have been assembled |
| |
| * "javadoc" so that the application Javadocs will have been created |
| |
| --> |
| |
| <target name="dist" depends="compile,javadoc" |
| description="Create binary distribution"> |
| |
| <!-- Copy documentation subdirectories --> |
| <mkdir dir="${dist.home}/docs"/> |
| <copy todir="${dist.home}/docs"> |
| <fileset dir="${docs.home}"/> |
| </copy> |
| |
| <!-- Create application JAR file --> |
| <jar jarfile="${dist.home}/${app.name}-${app.version}.war" |
| basedir="${build.home}"/> |
| |
| <!-- Copy additional files to ${dist.home} as necessary --> |
| |
| </target> |
| |
| |
| |
| <!-- ==================== Install Target ================================== --> |
| |
| <!-- |
| |
| The "install" target tells the specified Tomcat 5 installation to dynamically |
| install this web application and make it available for execution. It does |
| *not* cause the existence of this web application to be remembered across |
| Tomcat restarts; if you restart the server, you will need to re-install all |
| this web application. |
| |
| If you have already installed this application, and simply want Tomcat to |
| recognize that you have updated Java classes (or the web.xml file), use the |
| "reload" target instead. |
| |
| NOTE: This target will only succeed if it is run from the same server that |
| Tomcat is running on. |
| |
| NOTE: This is the logical opposite of the "remove" target. |
| |
| --> |
| |
| <target name="install" depends="compile" |
| description="Install application to servlet container"> |
| |
| <deploy url="${manager.url}" |
| username="${manager.username}" |
| password="${manager.password}" |
| path="${app.path}" |
| localWar="file://${build.home}"/> |
| |
| </target> |
| |
| |
| <!-- ==================== Javadoc Target ================================== --> |
| |
| <!-- |
| |
| The "javadoc" target creates Javadoc API documentation for the Java |
| classes included in your application. Normally, this is only required |
| when preparing a distribution release, but is available as a separate |
| target in case the developer wants to create Javadocs independently. |
| |
| --> |
| |
| <target name="javadoc" depends="compile" |
| description="Create Javadoc API documentation"> |
| |
| <mkdir dir="${dist.home}/docs/api"/> |
| <javadoc sourcepath="${src.home}" |
| destdir="${dist.home}/docs/api" |
| packagenames="*"> |
| <classpath refid="compile.classpath"/> |
| </javadoc> |
| |
| </target> |
| |
| |
| |
| <!-- ====================== List Target =================================== --> |
| |
| <!-- |
| |
| The "list" target asks the specified Tomcat 5 installation to list the |
| currently running web applications, either loaded at startup time or |
| installed dynamically. It is useful to determine whether or not the |
| application you are currently developing has been installed. |
| |
| --> |
| |
| <target name="list" |
| description="List installed applications on servlet container"> |
| |
| <list url="${manager.url}" |
| username="${manager.username}" |
| password="${manager.password}"/> |
| |
| </target> |
| |
| |
| <!-- ==================== Prepare Target ================================== --> |
| |
| <!-- |
| |
| The "prepare" target is used to create the "build" destination directory, |
| and copy the static contents of your web application to it. If you need |
| to copy static files from external dependencies, you can customize the |
| contents of this task. |
| |
| Normally, this task is executed indirectly when needed. |
| |
| --> |
| |
| <target name="prepare"> |
| |
| <!-- Create build directories as needed --> |
| <mkdir dir="${build.home}"/> |
| <mkdir dir="${build.home}/WEB-INF"/> |
| <mkdir dir="${build.home}/WEB-INF/classes"/> |
| |
| |
| <!-- Copy static content of this web application --> |
| <copy todir="${build.home}"> |
| <fileset dir="${web.home}"/> |
| </copy> |
| |
| <!-- Copy external dependencies as required --> |
| <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** --> |
| <mkdir dir="${build.home}/WEB-INF/lib"/> |
| <!-- |
| <copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/> |
| --> |
| |
| <!-- Copy static files from external dependencies as needed --> |
| <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** --> |
| |
| </target> |
| |
| |
| <!-- ==================== Reload Target =================================== --> |
| |
| <!-- |
| |
| The "reload" signals the specified application Tomcat 5 to shut itself down |
| and reload. This can be useful when the web application context is not |
| reloadable and you have updated classes or property files in the |
| /WEB-INF/classes directory or when you have added or updated jar files in the |
| /WEB-INF/lib directory. |
| |
| NOTE: The /WEB-INF/web.xml web application configuration file is not reread |
| on a reload. If you have made changes to your web.xml file you must stop |
| then start the web application. |
| |
| --> |
| |
| <target name="reload" depends="compile" |
| description="Reload application on servlet container"> |
| |
| <reload url="${manager.url}" |
| username="${manager.username}" |
| password="${manager.password}" |
| path="${app.path}"/> |
| |
| </target> |
| |
| |
| <!-- ==================== Remove Target =================================== --> |
| |
| <!-- |
| |
| The "remove" target tells the specified Tomcat 5 installation to dynamically |
| remove this web application from service. |
| |
| NOTE: This is the logical opposite of the "install" target. |
| |
| --> |
| |
| <target name="remove" |
| description="Remove application on servlet container"> |
| |
| <undeploy url="${manager.url}" |
| username="${manager.username}" |
| password="${manager.password}" |
| path="${app.path}"/> |
| |
| </target> |
| |
| |
| </project> |