<?xml version="1.0"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<!-- JSecurity root build file.  If you want to understand how the JSecurity build environment
     works (useful if you want to build from scratch or join the project as a developer),
     Read this article:

     An Ant Modular Build Environment for Enterprise Applications:
     http://www.onjava.com/pub/a/onjava/2005/06/22/modularant.html

     Reading this will instantly make you familiar with our build.
-->
<project name="jsecurity" default="all" xmlns:ivy="antlib:org.apache.ivy.ant">

    <!-- Static property definitions.  These will remain the same for any module or submodule. -->
    <property name="project.name" value="jsecurity"/>

    <property name="root.base.dir" value="${basedir}"/>

    <!-- Allow override of default build properties from properties file. -->
    <property file="build.properties"/>
    <property file="${user.home}/.jsecurity/build.properties"/>

    <!-- Environment variables (e.g. to pickup CATALINA_HOME for test deployment) -->
    <property environment="env"/>

    <property name="ivy.install.version" value="2.0.0-beta2"/>
    <condition property="ivy.home" value="${env.IVY_HOME}">
        <isset property="env.IVY_HOME"/>
    </condition>
    <property name="ivy.home" value="${user.home}/.ant"/>
    <property name="ivy.jar.dir" value="${ivy.home}/lib"/>
    <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar"/>

    <!-- version of the product, see http://apr.apache.org/versioning.html for
         details on this convention -->
    <property name="major.version" value="0"/>
    <property name="minor.version" value="9"/>
    <property name="patch.version" value="0"/>
    <property name="version" value="${major.version}.${minor.version}.${patch.version}"/>
    <property name="release.name" value="${project.name}-${version}"/>

    <!-- application-wide config files: (all other config files should be in a
         respective module or submodule) -->
    <property name="root.etc.dir" value="${root.base.dir}/etc"/>
    <property name="root.dist.dir" value="${root.base.dir}/build/${project.name}-${version}"/>

    <!-- All 3rd party libraries are in here: -->
    <property name="lib.dir" value="${root.base.dir}/lib"/>

    <!-- *RELATIVE* definitions.  These properties will reflect a directory
         structure relative to where the build is being executed -->
    <property name="base.dir" value="."/>
    <property name="etc.dir" value="${base.dir}/etc"/>
    <property name="src.dir" value="${base.dir}/src"/>
    <property name="test.dir" value="${base.dir}/test"/>
    <property name="build.dir" value="${base.dir}/build"/>
    <property name="classes.dir" value="${build.dir}/classes"/>
    <property name="test.classes.dir" value="${build.dir}/test-classes"/>
    <!-- <property name="dist.dir" value="${build.dir}/dist"/> -->


    <property name="docs.dir" value="${root.dist.dir}/docs"/>
    <property name="src.ref.dir" value="${root.base.dir}/docs/reference"/>
    <property name="dist.ref.dir" value="${docs.dir}/reference"/>
    <property name="double.sided" value="0"/>
    <!-- default to single-sided style -->
    <property name="api.dir" value="${docs.dir}/api"/>
    <property name="test.docs.dir" value="${docs.dir}/test-reports"/>

    <!-- compile flags, can be overridden on the command line using the -D flag -->
    <property name="compile.debug" value="true"/>
    <property name="compile.deprecation" value="false"/>
    <property name="compile.optimize" value="false"/>

    <property name="dist.jarName" value="${project.name}.jar"/>
    <property name="dist.jar" value="${root.dist.dir}/${dist.jarName}"/>

    <path id="core.src">
        <fileset dir="${base.dir}/core/src">
            <include name="**"/>
        </fileset>
        <pathelement location="${root.base.dir}/support/ehcache/src"/>
    </path>

    <path id="web.src">
        <pathelement location="${base.dir}/web/src"/>
    </path>

    <path id="all.libs">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar"/>
        </fileset>
        <pathelement location="${classes.dir}"/>
    </path>

    <!-- To disable this task (maybe behind a firewall?), use the -Doffline=true command-line switch -->
    <target name="download-ivy" unless="offline" description="Ensures Ivy exists for automatic dependency mgt">
        <mkdir dir="${ivy.jar.dir}"/>
        <!-- download Ivy from web site so that it can be used even without any special installation -->
        <echo message="Installing Ivy for automated dependecy management..."/>
        <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
             dest="${ivy.jar.file}" usetimestamp="true"/>
    </target>

    <!-- =================================
         target: load-ivy
         This target is not necessary if you put ivy.jar in your ant lib directory.
         If you already have ivy in your ant lib, you can simply remove this target.
         ================================= -->
    <target name="load-ivy" depends="download-ivy" description="Ensures Ivy ant tasks are loaded">
        <!-- try to load ivy here from local ivy dir, in case the user has not already dropped
             it into ant's lib dir (note that the latter copy will always take precedence).
             We will not fail as long as local lib dir exists (it may be empty) and
             ivy is in at least one of ant's lib dir or the local lib dir. -->
        <path id="ivy.lib.path">
            <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
        </path>
        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
    </target>

    <target name="retrieve-dependencies" depends="load-ivy"
            description="Ensures all build dependencies have been downloaded">
        <mkdir dir="${lib.dir}"/>
        <ivy:retrieve pattern="${lib.dir}/[conf]/[artifact].[ext]" sync="true"/>
    </target>

    <!-- ===================================================================
 -  Clean all local and children build files
 -  =================================================================== -->
    <target name="clean" description="Cleans the entire project">
        <delete dir="${build.dir}"/>
        <ant dir="samples/quickstart" target="clean"/>
        <ant dir="samples/spring" target="clean"/>
    </target>

    <target name="compile.core" depends="retrieve-dependencies" description="Compiles JSecurity core API only">
        <mkdir dir="${classes.dir}"/>
        <mkdir dir="${classes.dir}/META-INF"/>

        <javac destdir="${classes.dir}"
               debug="${compile.debug}"
               deprecation="${compile.deprecation}"
               optimize="${compile.optimize}"
               target="1.5"
               failonerror="true"
               srcdir="${base.dir}/core/src"
               classpathref="all.libs"
               sourcepathref="core.src"/>

        <copy todir="${classes.dir}" preservelastmodified="true">
            <fileset dir="${base.dir}/core/src">
                <include name="**/*.properties"/>
                <include name="**/*.xml"/>
                <include name="**/*.dtd"/>
                <include name="**/*.xsd"/>
            </fileset>
            <fileset dir="${root.base.dir}/support/ehcache/src">
                <include name="**/*.properties"/>
                <include name="**/*.xml"/>
                <include name="**/*.dtd"/>
                <include name="**/*.xsd"/>
            </fileset>
        </copy>

        <copy todir="${classes.dir}/META-INF" preservelastmodified="true">
            <fileset dir="${src.dir}">
                <include name="**/*.tld"/>
            </fileset>
        </copy>
    </target>

    <target name="compile.web" depends="compile.core" description="Compiles JSecurity web API only">
        <mkdir dir="${classes.dir}"/>
        <mkdir dir="${classes.dir}/META-INF"/>

        <javac destdir="${classes.dir}"
               debug="${compile.debug}"
               deprecation="${compile.deprecation}"
               optimize="${compile.optimize}"
               target="1.5"
               failonerror="true"
               classpathref="all.libs"
               sourcepath=""
               srcdir="${base.dir}/web/src"/>

        <copy todir="${build.dir}/web-classes" preservelastmodified="true">
            <fileset dir="${base.dir}/web/src">
                <include name="**/*.properties"/>
                <include name="**/*.xml"/>
                <include name="**/*.dtd"/>
                <include name="**/*.xsd"/>
            </fileset>
        </copy>

        <copy todir="${build.dir}/web-classes/META-INF" preservelastmodified="true">
            <fileset dir="${base.dir}/web/src">
                <include name="**/*.tld"/>
            </fileset>
        </copy>
    </target>


    <target name="compile.spring" depends="compile.core" description="Compiles Spring Framework support">
        <javac destdir="${classes.dir}"
               debug="${compile.debug}"
               deprecation="${compile.deprecation}"
               optimize="${compile.optimize}"
               target="1.5"
               failonerror="true">
            <classpath refid="all.libs"/>
            <classpath location="${classes.dir}"/>
            <src path="${root.base.dir}/support/spring/src"/>
        </javac>

        <copy todir="${classes.dir}" preservelastmodified="true">
            <fileset dir="${root.base.dir}/support/spring/src">
                <include name="**/*.properties"/>
                <include name="**/*.xml"/>
                <include name="**/*.dtd"/>
                <include name="**/*.xsd"/>
            </fileset>
        </copy>

        <copy todir="${classes.dir}/META-INF" preservelastmodified="true">
            <fileset dir="${root.base.dir}/support/spring/src">
                <include name="**/*.tld"/>
            </fileset>
        </copy>
    </target>

    <target name="compile.quartz" depends="compile.core" description="Compiles Quartz support">
        <javac destdir="${classes.dir}"
               debug="${compile.debug}"
               deprecation="${compile.deprecation}"
               optimize="${compile.optimize}"
               target="1.5"
               failonerror="true">
            <classpath refid="all.libs"/>
            <classpath location="${classes.dir}"/>
            <src path="${root.base.dir}/support/quartz/src"/>
        </javac>

        <copy todir="${classes.dir}" preservelastmodified="true">
            <fileset dir="${root.base.dir}/support/quartz/src">
                <include name="**/*.properties"/>
                <include name="**/*.xml"/>
                <include name="**/*.dtd"/>
                <include name="**/*.xsd"/>
            </fileset>
        </copy>

        <copy todir="${classes.dir}/META-INF" preservelastmodified="true">
            <fileset dir="${root.base.dir}/support/quartz/src">
                <include name="**/*.tld"/>
            </fileset>
        </copy>
    </target>

    <target name="compile" depends="compile.core, compile.web, compile.spring, compile.quartz" description="Compiles all classes"/>

    <target name="jar" depends="compile" description="Create full JAR file with all JSecurity classes">

        <mkdir dir="${root.dist.dir}"/>

        <jar jarfile="${dist.jar}">
            <fileset dir="${classes.dir}">
                <include name="org/jsecurity/**"/>
            </fileset>
            <metainf dir="${classes.dir}/META-INF">
                <include name="**"/>
            </metainf>
            <manifest>
                <attribute name="Implementation-Title" value="${project.name}"/>
                <attribute name="Implementation-Version" value="${version}"/>
                <attribute name="${project.name}-Version" value="${version}"/>
                <!-- Allow use of this JAR as a Java agent -->
                <!-- <attribute name="Premain-Class" value="org.jsecurity.instrument.InstrumentationSavingAgent" /> -->
            </manifest>
        </jar>

        <path id="retroweaver.path">
            <fileset dir="${lib.dir}" includes="**/*"/>
        </path>

        <taskdef name="retroweaver" classname="net.sourceforge.retroweaver.ant.RetroWeaverTask"
                 classpathref="retroweaver.path"/>
        <retroweaver target="1.3" inputjar="${dist.jar}" outputjar="${root.dist.dir}/${project.name}-jdk13.jar"/>
        <retroweaver target="1.4" inputjar="${dist.jar}" outputjar="${root.dist.dir}/${project.name}-jdk14.jar"/>

    </target>

    <target name="jar.deploy" depends="jar,src.zip"
            description="Copies the jar and src.zip files to a local directory specified by build properties.  Requires creation of .jsecurity/build.properties file to specify the deploy dir.">
        <fail unless="jar.deploy.dir"
              message="jar.deploy.dir property is not set. Please create ${user.home}/.jsecurity/build.properties and specify this property before running this task."/>
        <copy todir="${jar.deploy.dir}" preservelastmodified="true">
            <fileset file="${dist.jar}"/>
            <fileset file="${root.dist.dir}/${project.name}.src.zip"/>
        </copy>
    </target>

    <target name="samples.quickstart" depends="jar" description="Creates the quickstart .jar">
        <ant dir="samples/quickstart"/>
    </target>

    <target name="samples.quickstart.run" depends="samples.quickstart" description="Runs the quickstart class">
        <ant dir="samples/quickstart" target="run"/>
    </target>

    <target name="samples.standalone" depends="jar" description="Creates the standalone .jar">
        <ant dir="samples/standalone"/>
    </target>

    <target name="samples.standalone.run" depends="samples.standalone" description="Runs the standalone sample class">
        <ant dir="samples/standalone" target="run"/>
    </target>

    <target name="samples.web" depends="jar" description="Creates the JSecurity sample webapp .war">
        <ant dir="samples/web"/>
    </target>

    <target name="samples.spring" depends="jar" description="Creates the sample JSecurity/Spring .war">
        <ant dir="samples/spring"/>
    </target>

    <target name="samples.spring-hibernate" depends="jar"
            description="Creates the sample JSecurity Spring/Hibernate .war">
        <ant dir="samples/spring-hibernate"/>
    </target>

    <target name="samples" depends="samples.quickstart,samples.web,samples.spring,samples.spring-hibernate"
            description="Creates all sample applications"/>

    <target name="samples.web.deploy" depends="samples.web"
            description="Deploys the JSecurity quickstart .war">
        <ant dir="samples/web" target="deploy"/>
    </target>

    <target name="samples.spring.deploy" depends="samples.spring"
            description="Deploys the sample JSecurity/Spring .war">
        <ant dir="samples/spring" target="deploy"/>
    </target>

    <target name="samples.spring-hibernate.deploy" depends="samples.spring-hibernate"
            description="Deploys the sample JSecurity Spring/Hibernate .war">
        <ant dir="samples/spring-hibernate" target="deploy"/>
    </target>

    <!-- =================================================================== -->
    <!-- Javadoc all main sources                                            -->
    <!-- =================================================================== -->
    <target name="javadoc" description="Generate Javadocs">

        <path id="javadocSrcPath">
            <path refid="core.src"/>
            <pathelement location="${root.base.dir}/support/spring/src"/>
            <pathelement location="${root.base.dir}/support/quartz/src"/>
        </path>

        <echo message="Generating JavaDoc API..."/>
        <delete dir="${api.dir}" failonerror="false"/>
        <mkdir dir="${api.dir}"/>

        <javadoc destdir="${api.dir}" windowtitle="JSecurity API ${version}"
                 source="1.5" access="package" author="true" version="true" use="true"
                 defaultexcludes="true"
                 header='&lt;a href=\"http://www.jsecurity.org/\" target=\"_top\"&gt;JSecurity&lt;/a&gt;'>
            <sourcepath refid="javadocSrcPath"/>
            <arg value="-breakiterator"/>
            <arg value="-J-Xmx128m"/>
            <arg value="-J-XX:MaxPermSize=128m"/>
            <!-- <arg value="-J-Dhttp.proxyHost=${javadoc.proxyhost}"/>
          <arg value="-J-Dhttp.proxyPort=${javadoc.proxyport}"/> -->
            <doctitle><![CDATA[<h1>JSecurity API ${version}</h1>]]></doctitle>
            <!-- The following <bottom> block is to enable UA tracking via Google Analytics, but it fails the
                 JavaDoc task on a Windows Sun JDK.  It works fine on Mac OS X JavaDoc.  Since we want this UA
                 tracking, we use a Mac to build the release that end-users will download, so we leave this block
                 enabled.  If you want to run JavaDoc in a Windows environment, remove this block, and it will
                 run successfully. -->
            <bottom>
                <![CDATA[
                <i>Copyright &copy; 2004-2008 <a href="http://www.jsecurity.org/" target="_top">JSecurity</a>.</i>
                <script type="text/javascript">
                    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
                    document.write(unescape("%3Cscript src=%22" + gaJsHost + "google-analytics.com/ga.js%22 type=%22text/javascript%22%3E%3C/script%3E"));
                </script>
                <script type="text/javascript">
                    var pageTracker = _gat._getTracker("UA-3614410-1");
                    pageTracker._initData();
                    pageTracker._trackPageview();
                </script>
                ]]>
            </bottom>
            <classpath refid="all.libs"/>
            <packageset dir="${src.dir}">
                <include name="org/jsecurity/**"/>
            </packageset>
            <packageset dir="${root.base.dir}/support/ehcache/src">
                <include name="org/jsecurity/**"/>
            </packageset>
            <packageset dir="${root.base.dir}/support/spring/src">
                <include name="org/jsecurity/**"/>
            </packageset>
            <packageset dir="${root.base.dir}/support/quartz/src">
                <include name="org/jsecurity/**"/>
            </packageset>
            <link href="http://java.sun.com/j2se/1.5/docs/api"/>
            <link href="http://java.sun.com/j2ee/1.4/docs/api"/>
            <!-- Jakarta Commons -->
            <link href="http://jakarta.apache.org/commons/collections/apidocs/"/>
            <link href="http://commons.apache.org/beanutils/commons-beanutils-1.7.0/docs/api/"/>
            <link href="http://jakarta.apache.org/commons/logging/apidocs/"/>
            <link href="http://jakarta.apache.org/commons/codec/apidocs/"/>
            <link href="http://quartz.sourceforge.net/javadoc/"/>
            <link href="http://static.springframework.org/spring/docs/2.0.x/api/"/>
            <link href="http://ehcache.sourceforge.net/javadoc/"/>
        </javadoc>

    </target>

    <!-- ===================================================================
 -  Reference documentation
 -  =================================================================== -->
    <target name="doc.prepare" depends="retrieve-dependencies" description="Extra preparation for the documentation">

        <!-- unzip the docbook-libs.zip file containing the necessary jars: -->
        <unzip src="${lib.dir}/docbook/docbook-libs.zip" dest="${lib.dir}/docbook"/>

        <!-- <antcall target="tld.to.docbook"/> -->

    </target>


    <target name="doc.pdf" depends="doc.prepare" description="Compile reference documentation to pdf">

        <mkdir dir="${dist.ref.dir}/pdf/images"/>

        <copy todir="${dist.ref.dir}/pdf/images">
            <fileset dir="${src.ref.dir}/images">
                <include name="**/*"/>
            </fileset>
        </copy>

        <java classname="com.icl.saxon.StyleSheet" fork="true" dir="${dist.ref.dir}">
            <classpath>
                <fileset dir="${lib.dir}/docbook">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
            <jvmarg value="-Xmx256M"/>
            <jvmarg value="-XX:MaxPermSize=128m"/>
            <arg value="-o"/>
            <arg value="${dist.ref.dir}/pdf/docbook_fop.tmp"/>
            <arg value="${src.ref.dir}/src/index.xml"/>
            <arg value="${src.ref.dir}/styles/fopdf.xsl"/>
            <!-- controls the double sided pagination style -->
            <arg value="double.sided=${double.sided}"/>
        </java>

        <java classname="org.apache.fop.apps.Fop" fork="true" maxmemory="256m" dir="${dist.ref.dir}">
            <classpath>
                <fileset dir="${lib.dir}/docbook">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
            <arg value="${dist.ref.dir}/pdf/docbook_fop.tmp"/>
            <arg value="${dist.ref.dir}/pdf/jsecurity-reference.pdf"/>
        </java>

        <delete file="${dist.ref.dir}/pdf/docbook_fop.tmp"/>

    </target>


    <!-- Start of TLD => DocBook targets -->
    <!-- <target name="tld.to.docbook" depends="original.tld.to.docbook,forms.tld.to.docbook"/>


<target name="original.tld.to.docbook">

<antcall target="hack.DOCTYPE">
<param name="doctype.input.file" value="src/org/springframework/web/servlet/tags/spring.tld"/>
<param name="doctype.scrubbed.file" value="${doc.ref.dir}/src/spring.tld"/>
</antcall>

<antcall target="private.tld.to.docbook">
<param name="input.tld" value="spring.tld"/>
<param name="input.tld.file" value="${doc.ref.dir}/src/spring.tld"/>
</antcall>

</target>


<target name="forms.tld.to.docbook">

<antcall target="hack.DOCTYPE">
<param name="doctype.input.file" value="src/org/springframework/web/servlet/tags/form/spring-form.tld"/>
<param name="doctype.scrubbed.file" value="${doc.ref.dir}/src/spring-form.tld"/>
</antcall>

<antcall target="private.tld.to.docbook">
<param name="input.tld" value="spring-form.tld"/>
<param name="input.tld.file" value="${doc.ref.dir}/src/spring-form.tld"/>
</antcall>

</target>


<target name="private.tld.to.docbook" if="input.tld">

<property name="out.file" value="${doc.ref.dir}/src/${input.tld}.xml"/>

<xslt processor="trax" in="${input.tld.file}" out="${out.file}"
    style="${doc.ref.dir}/styles/tld.to.docbook.xsl">
<param name="title" expression="${input.tld}"/>
</xslt>

<antcall target="hack.CDATA">
<param name="target.file" value="${out.file}"/>
</antcall>

<delete file="${input.tld.file}"/>

</target>


<target name="hack.CDATA" if="target.file">

<replace file="${target.file}">
<replacetoken><![CDATA[&lt;]]></replacetoken>
<replacevalue><![CDATA[<]]></replacevalue>
</replace>

<replace file="${target.file}">
<replacetoken><![CDATA[&gt;]]></replacetoken>
<replacevalue><![CDATA[>]]></replacevalue>
</replace>

</target>


<target name="hack.DOCTYPE" if="doctype.input.file">

<!- -
Removes the TLD DTD decl. from the TLD files as this messes
up the transform (feel free to fix this more elegantly)
- ->
<copy file="${doctype.input.file}" tofile="${doctype.scrubbed.file}" overwrite="true"/>

<replace file="${doctype.scrubbed.file}" value="">
<replacetoken><![CDATA[<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">]]></replacetoken>
</replace>

</target>
<!- - End of TLD => DocBook targets -->


    <target name="doc.html" depends="doc.prepare"
            description="Compile reference documentation to chunked html">

        <mkdir dir="${dist.ref.dir}/html/images"/>

        <copy todir="${dist.ref.dir}/html/images">
            <fileset dir="${src.ref.dir}/images">
                <include name="**/*"/>
            </fileset>
        </copy>

        <copy todir="${dist.ref.dir}/html/" failonerror="false">
            <fileset dir="${src.ref.dir}/styles/">
                <include name="*.css"/>
                <include name="*.js"/>
            </fileset>
        </copy>

        <java classname="com.icl.saxon.StyleSheet" fork="true" dir="${dist.ref.dir}/html/">
            <classpath>
                <fileset dir="${lib.dir}/docbook">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
            <jvmarg value="-Xmx256M"/>
            <jvmarg value="-XX:MaxPermSize=128m"/>
            <arg value="${src.ref.dir}/src/index.xml"/>
            <arg value="${src.ref.dir}/styles/html_chunk.xsl"/>
        </java>

    </target>


    <target name="doc.htmlsingle" depends="doc.prepare" description="Compile reference documentation to single html">

        <mkdir dir="${dist.ref.dir}/html_single/images"/>

        <copy todir="${dist.ref.dir}/html_single/images">
            <fileset dir="${src.ref.dir}/images">
                <include name="**/*"/>
            </fileset>
        </copy>
        <copy todir="${dist.ref.dir}/html_single/" file="${src.ref.dir}/styles/html.css" failonerror="false"/>

        <java classname="com.icl.saxon.StyleSheet" fork="true" dir="${dist.ref.dir}">
            <classpath>
                <fileset dir="${lib.dir}/docbook">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
            <jvmarg value="-Xmx256M"/>
            <jvmarg value="-XX:MaxPermSize=128m"/>
            <arg value="-o"/>
            <arg value="${dist.ref.dir}/html_single/index.html"/>
            <arg value="${src.ref.dir}/src/index.xml"/>
            <arg value="${src.ref.dir}/styles/html.xsl"/>
        </java>

    </target>


    <target name="doc.all" depends="doc.html,doc.htmlsingle,doc.pdf" description="Generate reference documentation"/>

    <!-- <name name="junit.check.warning" if="tests.failed">
       <echo>
       ***********************************************************
       * One or more unit tests failed!
       * Check the reports located in ${test.docs.dir}
       * for details...
       ***********************************************************
       </echo>
   </name>

   <!- - ===================================================================
     -  quick-test-report - quickly generates test report documentation based
     -  on the xml test reports previously created during a junit task
     -  execution. (this does not run the task).
     -  =================================================================== - ->
   <name name="test.report">
       <echo message="Generating test reports..."/>

       <junitreport todir="${test.docs.dir}">
           <fileset dir=".">
               <include name="**/TEST-*"/>
           </fileset>
           <report todir="${test.docs.dir}"/>
       </junitreport>
   </name>

   <name name="unit.tests" depends="compile">
       <echo message="Executing unit tests..."/>

       <!- - Any properties files needed by test cases and/or Spring test case
            configuration must be under the base root dir hierarchy so relative
            file references may work properly.  - ->
       <copy toDir="${classes.dir}" preservelastmodified="true" file="${root.base.dir}/etc/log4j.properties"/>
       <copy toDir="${classes.dir}" preservelastmodified="true" file="${root.base.dir}/db/build/gen/jdbc.properties"/>

       <junit printsummary="withOutAndErr"
              showoutput="true"
              haltonfailure="no"
              failureproperty="tests.failed"
              errorproperty="tests.failed"
              timeout="60000"
              fork="yes">
           <classpath refid="test.path"/>

           <formatter type="brief" usefile="false"/>
           <formatter type="xml"/>
           <!- - allows us to generate web reports - ->

           <batchtest fork="true" todir="${gen.dir}">
               <fileset dir="${test.classes.dir}">

                   <include name="**/*Test.class"/>

                   <exclude name="**/*IntegrationTest.class"/>
                   <exclude name="**/*SystemTest.class"/>
                   <exclude name="**/*StressTest.class"/>

               </fileset>
           </batchtest>

       </junit>

   </name>

   <name name="test" depends="dist">
       <antcall name="template">
           <param name="name" value="test"/>
       </antcall>
   </name> -->


    <target name="src.zip" description="Create source ZIP (containing Java sources)">
        <mkdir dir="${root.dist.dir}"/>
        <delete file="${root.dist.dir}/${project.name}.src.zip"/>
        <zip destfile="${root.dist.dir}/${project.name}.src.zip">
            <fileset dir="${src.dir}">
                <include name="org/jsecurity/**"/>
            </fileset>
            <fileset dir="${root.base.dir}/support/ehcache/src">
                <include name="org/jsecurity/**"/>
            </fileset>
            <fileset dir="${root.base.dir}/support/spring/src">
                <include name="org/jsecurity/**"/>
            </fileset>
            <fileset dir="${root.base.dir}/support/quartz/src">
                <include name="org/jsecurity/**"/>
            </fileset>
        </zip>
    </target>

    <target name="makepom" depends="load-ivy" description="Use Ivy to generate a Maven 2 pom.xml file">
        <ivy:makepom ivyfile="${root.base.dir}/ivy.xml" pomfile="${build.dir}/${project.name}.pom">
            <mapping conf="runtime" scope="compile"/>
            <mapping conf="runtime-web" scope="compile"/>
            <mapping conf="test" scope="test"/>
        </ivy:makepom>
    </target>

    <target name="release" depends="jar,samples,src.zip,makepom,javadoc,doc.all"
            description="Create all artifacts for a JSecurity release">
        <property name="release.dir.name" value="${project.name}-${version}"/>
        <property name="release.zip.name" value="${release.dir.name}.zip"/>
        <property name="release.depzip.name" value="${release.dir.name}-with-dependencies.zip"/>
        <copy todir="${root.dist.dir}">
            <fileset dir="${root.base.dir}">
                <type type="file"/>
                <exclude name="**/build/**"/>
                <exclude name="**/.svn/**"/>
                <exclude name="**/lib/**"/>
                <exclude name="${release.dir.name}"/>
            </fileset>
        </copy>
        <zip destfile="${build.dir}/${release.zip.name}"
             basedir="${build.dir}"
             includes="${release.dir.name}/**"
             excludes="**/${release.zip.name},**/lib/**"/>

        <!-- Our ivy config puts copies of jars under lib directory according to the multiple build
configuration targets.  We don't want multiple copies in the dependency lib, because it would
make the download size larger.  Instead, just include one copy of each: -->
        <mkdir dir="${root.dist.dir}/lib"/>
        <copy todir="${root.dist.dir}/lib" overwrite="true" flatten="true">
            <fileset dir="${lib.dir}">
                <include name="**/*.jar"/>
                <exclude name="**/docbook/*.jar"/>
            </fileset>
        </copy>
        <zip destfile="${build.dir}/${release.depzip.name}"
             basedir="${build.dir}"
             includes="${release.dir.name}/**"
             excludes="**/${release.zip.name}, **/lib/docbook/docbook-dtd/**, **/lib/docbook/docbook-xsl/**, **/lib/docbook/*.jar"/>
        <delete dir="${root.dist.dir}/lib"/>

    </target>

    <!-- ===================================================================
 -  all - everything
 -  =================================================================== -->
    <target name="all" depends="release" description="Do everything"/>

</project>

