<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
 * Copyright 2001-2004 The Apache Software Foundation.
 *
 * Licensed 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.
 */
 -->

<!--
     | The main goals for multi project build are:
     |
     | default
     |    Build all the modules
     |
     | clean
     |    Deletes the 'target' directory in all projects

     | clean-repo
     |    Deletes the 'target' directory in all projects
     |
     | war
     |    Build the war
     |
     | maven war-withsamples
     |    build the war with the default samples
     |
     | release
     | 	 Creates the complete release
   -->

<project default="jar"
         xmlns:j="jelly:core"
         xmlns:u="jelly:util"
         xmlns:deploy="deploy"
         xmlns:modules="local:modules"
         xmlns:ant="jelly:ant"
         xmlns:plugin="plugin"
         xmlns:macros="macros"
         xmlns:maven="jelly:maven"
         xmlns:define="jelly:define">

    <j:set var="dist.name" value="${pom.artifactId}-${pom.currentVersion}"/>
    <j:set var="dist.dir" value="target/dist"/>

    <tstamp>
        <format property="release_date" pattern="MMMM d, yyyy" locale="en"/>
    </tstamp>

    <j:set var="modules" value="*"/>

    <preGoal name="modules:reactor:init">
        <j:set var="groupId" value="maven-itest-plugin"/>
        <j:set var="artifactId" value="maven-itest-plugin"/>
        <j:set var="version" value="1.0"/>
        <attainGoal name="plugin:download-artifact"/>
        <maven:installPlugin
                file="${maven.repo.local}/${groupId}/plugins/${artifactId}-${version}.jar"
                cache="true"/>
    </preGoal>

    <!-- ======= -->
    <!-- Modules -->
    <!-- ======= -->
    <goal name="modules:reactor:init">
        <!--
           | Determine the includes which the reactor will use.
           |
           | Uses 4 properties to control which modules will be include:
           |
           | module.types      Comma seperated list of module types (ie. specs or modules)
           | module.includes   Comma seperated list of module names (ie. common, core, ...)
           | modules           Same as module.includes, module.includes initializes to this value
           | module.excludes   Comma seperated list of module names to exclude
           |
           | The end result is that modules.reactor.includes is set to the project.xml files
           | to include.  This is the value the reactor will use.
           |
           | Example, to only build the common and core modules:
           |
           | maven -Dmodules=common,core
         -->

        <j:if test="${context.getVariable('module.types') == null}">
            <j:set var="module.types" value="modules,applications,plugins"/>
        </j:if>

        <j:if test="${context.getVariable('modules') == null}">
            <!-- The default is to build everything -->
            <j:set var="modules" value="${modules}"/>
        </j:if>

        <j:if test="${context.getVariable('module.includes') == null}">
            <j:set var="module.includes" value="${modules}"/>
        </j:if>

        <j:if test="${context.getVariable('module.excludes') == null}">
            <j:set var="module.excludes" value=""/>
        </j:if>

        <u:tokenize var="types" delim=",">${module.types}</u:tokenize>

        <ant:fileScanner var="scanner">
            <ant:fileset dir="${basedir}">
                <j:forEach var="type" items="${types}">
                    <j:choose>
                        <j:when test="${context.getVariable('module.includes') == '*'}">
                            <ant:include name="${type}/*/project.xml"/>
                        </j:when>
                        <j:otherwise>
                            <u:tokenize var="includes" delim=",">${module.includes}</u:tokenize>
                            <j:forEach var="include" items="${includes}">
                                <u:available file="${basedir}/${type}/${include}/project.xml">
                                    <ant:include name="${type}/${include}/project.xml"/>
                                </u:available>
                            </j:forEach>
                        </j:otherwise>
                    </j:choose>

                    <j:choose>
                        <j:when test="${context.getVariable('module.excludes') == '*'}">
                            <ant:exclude name="${type}/*/project.xml"/>
                        </j:when>
                        <j:otherwise>
                            <u:tokenize var="excludes" delim=",">${module.excludes}</u:tokenize>
                            <j:forEach var="exclude" items="${excludes}">
                                <u:available file="${basedir}/${type}/${exclude}/project.xml">
                                    <ant:exclude name="${type}/${exclude}/project.xml"/>
                                </u:available>
                            </j:forEach>
                        </j:otherwise>
                    </j:choose>
                </j:forEach>
            </ant:fileset>
        </ant:fileScanner>

        <!-- Init/Reinit this variable -->
        <j:set var="modules.reactor.includes" value=""/>

        <!-- Setup the includes which will be used by the reactor -->
        <j:forEach var="file" items="${scanner.iterator()}">
            <!--
               | Would be nice if reactor would take a file set, but for now just remove
               | the baseddir portion of the file's name.  So this will essentially strip off
               | ${basedir}
             -->
            <j:set var="directory"
                   value="${file.parentFile.parentFile.name}/${file.parentFile.name}"/>
            <j:set var="filename" value="${directory}/${file.name}"/>
            <j:choose>
                <j:when test="${context.getVariable('modules.reactor.includes') == null}">
                    <j:set var="modules.directories" value="${directory}"/>
                    <j:set var="modules.reactor.includes" value="${filename}"/>
                </j:when>
                <j:otherwise>
                    <j:set var="modules.directories" value="${modules.directories},${directory}"/>
                    <j:set var="modules.reactor.includes"
                           value="${modules.reactor.includes},${filename}"/>
                </j:otherwise>
            </j:choose>
        </j:forEach>
    </goal>

    <!-- Helper tags for modules -->
    <define:taglib uri="local:modules">
        <define:tag name="reactor">
            <attainGoal name="modules:reactor:init"/>

            <j:choose>
                <j:when test="${goals != null}">
                    <maven:reactor
                            basedir="${basedir}"
                            includes="${modules.reactor.includes}"
                            banner="Executing (${goals}):"
                            ignoreFailures="false"
                            goals="${goals}"
                            postProcessing="true"
                            />
                </j:when>
                <j:when test="${goals == null}">
                    <maven:reactor
                            basedir="${basedir}"
                            includes="${modules.reactor.includes}"
                            banner="Executing (${goals}):"
                            ignoreFailures="false"
                            postProcessing="true"
                            />
                </j:when>
            </j:choose>

            <!-- Set reactor projects in parent scope so goals have access to it -->
            <j:set var="reactorProjects" value="${reactorProjects}" scope="parent"/>
        </define:tag>
    </define:taglib>

    <goal name="m:init">
        <ant:fileScanner var="scanner">
            <ant:fileset dir="${basedir}">
                <u:tokenize var="includes" delim=",">${maven.multiproject.includes}</u:tokenize>
                <j:forEach var="include" items="${includes}">
                    <ant:include name="${include}"/>
                </j:forEach>
                <u:tokenize var="excludes" delim=",">${maven.multiproject.excludes}</u:tokenize>
                <j:forEach var="exclude" items="${excludes}">
                    <ant:exclude name="${exclude}"/>
                </j:forEach>
            </ant:fileset>
        </ant:fileScanner>

        <j:set var="maven.multiproject.includes" value=""/>
        <j:set var="maven.multiproject.excludes" value=""/>
        <j:set var="modules.directories" value=""/>

        <u:tokenize var="moduleList" delim=",">${modules}</u:tokenize>
        <j:set var="currentDir" value="${basedir}/"/>
        <j:forEach var="file" items="${scanner.iterator()}">
            <j:set var="directory" value="${file.parentFile.absolutePath}"/>
            <j:set var="include" value="${file.absolutePath.substring(currentDir.length())}"/>
            <j:if test="${moduleList.isEmpty() || moduleList.contains(file.parentFile.name)}">
                <j:choose>
                    <j:when test="${context.getVariable('maven.multiproject.includes') == ''}">
                        <j:set var="modules.directories" value="${directory}"/>
                        <j:set var="maven.multiproject.includes" value="${include}"/>
                    </j:when>
                    <j:otherwise>
                        <j:set var="modules.directories"
                               value="${modules.directories},${directory}"/>
                        <j:set var="maven.multiproject.includes"
                               value="${maven.multiproject.includes},${include}"/>
                    </j:otherwise>
                </j:choose>
            </j:if>
        </j:forEach>
    </goal>

    <goal name="jar:jar">
        <attainGoal name="create-jar"/>
        <ant:copy file="target/lib/axis2-${pom.currentVersion}.jar"
                  toDir="target/"/>
    </goal>

    <goal name="jar">
        <attainGoal name="multiproject:install"/>
        <attainGoal name="jar:install"/>
    </goal>

    <goal name="init">
        <ant:mkdir dir="target"/>
        <ant:mkdir dir="${dist.dir}"/>
        <ant:mkdir dir="target/lib"/>

        <uptodate property="jars.uptodate" targetfile="target/axis2-${pom.currentVersion}.war">
            <srcfiles dir="modules">
                <include name="**/*.java"/>
                <include name="**/*.xml"/>
                <include name="**/*.wsdl"/>
                <exclude name="**/target/**"/>
            </srcfiles>
        </uptodate>
        <echo message="the files are up to date = ${jars.uptodate}"></echo>
    </goal>

    <goal name="modules:clean">
        <attainGoal name="modules:reactor:init"/>
        <u:tokenize var="directories" delim=",">${modules.directories}</u:tokenize>
        <j:forEach var="directory" items="${directories}">
            <ant:echo>+----------------------------------------</ant:echo>
            <ant:echo>| Cleaning: ${directory}</ant:echo>
            <ant:echo>+----------------------------------------</ant:echo>
            <ant:delete dir="${directory}/target"/>
            <ant:delete quiet="false" failonerror="false">
                <ant:fileset dir="${directory}">
                    <ant:include name="maven.log"/>
                    <ant:include name="velocity.log*"/>
                    <ant:include name="junit*.properties"/>
                    <ant:include name="axis.log"/>
                    <ant:include name="junit*.properties"/>
                    <ant:include name="temp.properties"/>
                </ant:fileset>
            </ant:delete>
            <ant:echo></ant:echo>
        </j:forEach>
        <ant:echo>+----------------------------------------</ant:echo>
        <ant:echo>| Cleaning: target and etc/target</ant:echo>
        <ant:echo>+----------------------------------------</ant:echo>
        <ant:delete dir="target"/>
        <ant:delete dir="etc/target"/>
    </goal>

    <goal name="clean">
        <ant:delete dir="${user.home}/.axis2"/>
        <ant:delete dir="${user.home}/.axis2home"/>
        <attainGoal name="modules:clean"/>
        <attainGoal name="clean-repo"/>
    </goal>

    <!-- ================================================================ -->
    <!--- Clean the Repository -->
    <!-- ================================================================ -->
    <goal name="clean-repo">
        <ant:delete>
            <ant:fileset dir="${maven.repo.local}">
                <ant:include name="axis/jars/axis2*.jar"/>
            </ant:fileset>
        </ant:delete>
    </goal>

    <goal name="all-tests">
        <modules:reactor goals="jar:install,test,itest"/>
    </goal>

    <goal name="cleanse-sources">
        <modules:reactor goals="cleanse-sources"/>
    </goal>

    <goal name="clover">
        <modules:reactor goals="clover:on,jar:install,test"/>
        <attainGoal name="clover:merge"/>
        <attainGoal name="clover:report"/>
    </goal>

    <goal name="create-jar" prereqs="init">
        <!-- Hack for now, don't fail building jar if saaj is absent -->
        <ant:mkdir dir="modules/saaj/target/classes"/>

        <jar destfile="target/lib/axis2-${pom.currentVersion}.jar">
            <fileset dir="modules/core/target/classes"/>
            <!-- adding the tool classes. This is needed to get the ant task -->
            <fileset dir="modules/tool/target/classes"/>
            <fileset dir="modules/xml/target/classes"/>
            <fileset dir="modules/wsdl/target/classes"/>
            <fileset dir="modules/saaj/target/classes"/>
            <fileset dir="modules/common/target/classes"/>
            <fileset dir="modules/addressing/target/classes"/>
            <fileset dir="modules/codegen/target/classes"/>
            <fileset dir="modules/adb/target/classes"/>
            <fileset dir="modules/addressing/target/">
                <include name="modules/addressing.mar"/>
            </fileset>
        </jar>
    </goal>

    <goal name="create-lib">
        <macros:copy-deps copyToDir="target/lib" mods="*"/>
    </goal>

    <!-- ================================================================ -->
    <!--- Create the War -->
    <!-- ================================================================ -->
    <goal name="war" prereqs="jar,init-dist,cache-war-deps">

        <ant:mkdir dir="target/temp/war/lib"/>
        <ant:mkdir dir="target/temp/war/toWEB-INF/modules"/>
        <ant:mkdir dir="target/temp/war/toWEB-INF/services"/>

        <!-- Create axis2-core.jar -->
        <jar destfile="target/temp/war/lib/axis2-core-${pom.currentVersion}.jar">
            <fileset dir="modules/core/target/classes/"/>
            <fileset dir="modules/common/target/classes/"/>
            <fileset dir="modules/xml/target/classes/"/>
            <fileset dir="modules/wsdl/target/classes/"/>
        </jar>

        <!-- Copy the adb jar -->
        <ant:copy toDir="target/temp/war/lib">
            <ant:fileset file="modules/adb/target/axis2-adb-${pom.currentVersion}.jar"/>
        </ant:copy>

        <!-- Copy the doom jar -->
        <ant:copy toDir="target/temp/war/lib">
            <ant:fileset file="modules/doom/target/axis2-doom-${pom.currentVersion}.jar"/>
        </ant:copy>

        <!-- Copy the codegen jar -->
        <ant:copy toDir="target/temp/war/lib">
            <ant:fileset file="modules/codegen/target/axis2-codegen-${pom.currentVersion}.jar"/>
        </ant:copy>

        <!-- copy the addressing mar -->
        <ant:copy toDir="target/temp/war/toWEB-INF/modules">
            <ant:fileset file="modules/addressing/target/addressing.mar"/>
        </ant:copy>

        <!-- copy the sample services -->
        <ant:copy toDir="target/temp/war/toWEB-INF/services">
            <ant:fileset file="modules/samples/target/toWar/services/version.aar"/>
        </ant:copy>

        <ant:war destfile="target/dist/axis2.war"
                 webxml="modules/webapp/conf/web.xml">
            <ant:fileset dir="modules/webapp">
                <ant:exclude name="project.xml"/>
                <ant:exclude name="**/*.iml"/>
                <ant:exclude name="**/.*"/>
                <ant:exclude name="**/conf/**"/>
            </ant:fileset>
            <ant:lib dir="target/temp/war/lib">
                <ant:include name="**"/>
                <ant:exclude name="**servlet**"/>
                <ant:exclude name="ant*.jar"/>
            </ant:lib>
            <ant:lib dir="${war_dep_cache}">
                <ant:include name="**"/>
                <ant:exclude name="**servlet**"/>
                <ant:exclude name="ant*.jar"/>
            </ant:lib>
            <ant:classes dir="modules/core/conf">
                <ant:include name="*.properties"/>
            </ant:classes>
            <ant:webinf dir="modules/core/src/org/apache/axis2/deployment">
                <ant:include name="*.xml"/>
            </ant:webinf>
            <ant:webinf dir="target/temp/war/toWEB-INF"/>
        </ant:war>
    </goal>

    <!-- to transform htmls to xdocs -->
    <preGoal name="xdoc:jelly-transform">
        <attainGoal name="html2xdoc"/>
    </preGoal>

    <!-- ================================================================ -->
    <!--- Create the Release -->
    <!-- ================================================================ -->
    <goal name="release"
          prereqs="jar,dist-min-bin,dist-min-src,dist-std-bin,dist-std-src,dist-war,dist-docs">
        <ant:echo>+----------------------------------------------</ant:echo>
        <ant:echo>| Creating: Axis2 Distributions</ant:echo>
        <ant:echo>+----------------------------------------------</ant:echo>

        <ant:copy toFile="target/dist/addressing-${pom.currentVersion}.mar"
                  file="modules/addressing/target/addressing.mar"/>

        <ant:copy toFile="target/dist/security-${pom.currentVersion}.mar"
                  file="modules/addressing/target/security.mar"/>


        <ant:delete dir="target/temp"/>
        <ant:delete dir="target/apidocs"/>
    </goal>

    <goal name="init-dist">
        <ant:filter token="axis2_version" value="${pom.currentVersion}"/>
        <ant:filter token="release_date" value="${release_date}"/>

        <property name="min_dep_cache" value="target/temp/cache/min"/>
        <property name="std_dep_cache" value="target/temp/cache/std"/>
        <property name="war_dep_cache" value="target/temp/cache/war"/>

        <ant:mkdir dir="target/dist"/>
    </goal>

    <goal name="dist-min-bin" prereqs="init-dist,cache-min-deps">
        <ant:echo>+----------------------------------------------</ant:echo>
        <ant:echo>| Creating: Axis2 Minimal Binary Distribution</ant:echo>
        <ant:echo>+----------------------------------------------</ant:echo>

        <ant:mkdir dir="target/dist"/>
        <ant:mkdir dir="target/temp/min/bin/lib"/>

        <!-- Copy the 3rd party libs -->
        <ant:copy toDir="target/temp/min/bin/lib">
            <ant:fileset dir="${min_dep_cache}"/>
        </ant:copy>

        <!-- Delete testing jars -->
        <echo message="Deleting Unwanted testing jars"/>
        <ant:delete>
            <fileset dir="target/temp/min/bin/lib">
                <include name="**/ant*.jar"/>
                <include name="**/xmlunit*.jar"/>
                <include name="**/junit*.jar"/>
            </fileset>
        </ant:delete>

        <!-- Create axis2-core.jar -->
        <jar destfile="target/temp/min/bin/lib/axis2-core-${pom.currentVersion}.jar">
            <fileset dir="modules/core/target/classes/"/>
            <fileset dir="modules/common/target/classes/"/>
            <fileset dir="modules/xml/target/classes/"/>
            <fileset dir="modules/wsdl/target/classes/"/>
        </jar>

        <!-- Copy the adb jar -->
        <ant:copy toDir="target/temp/min/bin/lib">
            <ant:fileset file="modules/adb/target/axis2-adb-${pom.currentVersion}.jar"/>
        </ant:copy>

        <!-- Copy the release documents -->
        <macros:copy-release-docs toDir="target/temp/min/bin"
                                  readmeFile="release-docs/readme-files/README-min-bin.txt"/>

        <ant:mkdir dir="${dist.dir}"/>
        <ant:zip file="${dist.dir}/axis2-min-${pom.currentVersion}-bin.zip"
                 basedir="target/temp/min/bin"/>
        <ant:delete dir="target/temp/min/bin"/>
    </goal>

    <goal name="dist-min-src" prereqs="init-dist">
        <ant:echo>+----------------------------------------------</ant:echo>
        <ant:echo>| Creating: Axis2 Minimal Source Distribution</ant:echo>
        <ant:echo>+----------------------------------------------</ant:echo>

        <ant:mkdir dir="target/dist"/>
        <ant:mkdir dir="target/temp/min/src"/>

        <ant:copy toDir="target/temp/min/src">
            <ant:fileset dir=".">
                <ant:include name="**/etc/**"/>
                <ant:include name="**/modules/core/**"/>
                <ant:include name="**/modules/common/**"/>
                <ant:include name="**/modules/xml/**"/>
                <ant:include name="**/modules/wsdl/**"/>
                <ant:include name="**/modules/adb/**"/>
                <ant:exclude name="**/SameServiceAddingTest.java"/>
                <!-- TODO: This is failing in the distros. Must Fix it. -->
                <ant:exclude name="**/target/**"/>
                <ant:exclude name="**/*class*/**"/>
                <ant:exclude name="**/.svn/**"/>
                <ant:exclude name="**/bin/**"/>
                <ant:exclude name="**/*.log"/>
                <ant:exclude name=".*"/>
                <ant:exclude name="**/*.license"/>
                <ant:exclude name="**/*.iml"/>
            </ant:fileset>
        </ant:copy>
        <ant:copy toDir="target/temp/min/src/etc" overwrite="true" filtering="on">
            <ant:fileset dir="release-docs/release-etc/min"/>
        </ant:copy>

        <!-- Copy the master maven files for the minimal src distro -->
        <ant:copy toFile="target/temp/min/src/maven.xml">
            <ant:fileset file="release-docs/maven-scripts/maven-min.xml"/>
        </ant:copy>
        <ant:copy toDir="target/temp/min/src">
            <ant:fileset file="project.xml"/>
        </ant:copy>

        <!-- Copy the release documents -->
        <macros:copy-release-docs toDir="target/temp/min/src"
                                  readmeFile="release-docs/readme-files/README-min-src.txt"/>

        <ant:zip file="${dist.dir}/axis2-min-${pom.currentVersion}-src.zip">
            <ant:fileset dir="target/temp/min/src"/>
        </ant:zip>
        <ant:delete dir="target/temp/min/src"/>
    </goal>

    <goal name="dist-std-bin" prereqs="init-dist,cache-std-deps">
        <ant:echo>+----------------------------------------------</ant:echo>
        <ant:echo>| Creating: Axis2 Standard Binary Distribution</ant:echo>
        <ant:echo>+----------------------------------------------</ant:echo>

        <ant:property name="std.bin.temp.dir" value="target/temp/std/bin"/>

        <ant:mkdir dir="${std.bin.temp.dir}/lib"/>
        <ant:mkdir dir="${std.bin.temp.dir}/bin"/>
        <ant:mkdir dir="${std.bin.temp.dir}/modules"/>
        <ant:mkdir dir="${std.bin.temp.dir}/samples"/>

        <!-- Copy bin scripts -->
        <ant:copy todir="${std.bin.temp.dir}/bin">
            <ant:fileset dir="modules/tool/script"/>
        </ant:copy>

        <!-- Copy the 3rd party libs -->
        <ant:copy toDir="${std.bin.temp.dir}/lib">
            <ant:fileset dir="${min_dep_cache}"/>
            <ant:fileset dir="${std_dep_cache}"/>
        </ant:copy>

        <!-- Delete tesing jars -->
        <echo message="Deleting Unwanted testing jars"/>
        <ant:delete>
            <fileset dir="${std.bin.temp.dir}/lib">
                <include name="**/ant*.jar"/>
                <include name="**/xmlunit*.jar"/>
                <include name="**/junit*.jar"/>
            </fileset>
        </ant:delete>

        <!-- Create axis2-core.jar -->
        <jar destfile="${std.bin.temp.dir}/lib/axis2-core-${pom.currentVersion}.jar">
            <fileset dir="modules/core/target/classes/"/>
            <fileset dir="modules/common/target/classes/"/>
            <fileset dir="modules/xml/target/classes/"/>
            <fileset dir="modules/wsdl/target/classes/"/>
        </jar>

        <ant:copy toDir="${std.bin.temp.dir}/lib">
            <ant:fileset file="modules/adb/target/axis2-adb-${pom.currentVersion}.jar"/>
            <ant:fileset file="modules/codegen/target/axis2-codegen-${pom.currentVersion}.jar"/>
            <ant:fileset file="modules/doom/target/axis2-doom-${pom.currentVersion}.jar"/>
        </ant:copy>

        <!-- Copy addressing mar -->
        <ant:copy toDir="${std.bin.temp.dir}/modules">
            <ant:fileset file="modules/addressing/target/addressing.mar"/>
        </ant:copy>

        <!-- Copy the codegen jar -->
        <ant:copy toDir="${std.bin.temp.dir}/lib">
            <ant:fileset file="modules/codegen/target/axis2-codegen-${pom.currentVersion}.jar"/>
        </ant:copy>

        <!-- Copy the samples -->
        <ant:copy todir="${std.bin.temp.dir}/samples">
            <ant:fileset dir="modules/samples/target/samples"/>
        </ant:copy>
        <ant:copy todir="${std.bin.temp.dir}/samples/userguide">
            <ant:fileset file="${std.bin.temp.dir}/samples/groovyService.aar"/>
        </ant:copy>
        <ant:delete file="${std.bin.temp.dir}/samples/groovyService.aar"/>

        <!-- Copy the release documents -->
        <macros:copy-release-docs toDir="${std.bin.temp.dir}"
                                  readmeFile="release-docs/readme-files/README-std-bin.txt"/>

        <ant:zip file="${dist.dir}/axis2-std-${pom.currentVersion}-bin.zip"
                 basedir="${std.bin.temp.dir}"/>
        <ant:delete dir="${std.bin.temp.dir}"/>
    </goal>

    <goal name="dist-std-src" prereqs="init-dist">
        <ant:echo>+----------------------------------------------</ant:echo>
        <ant:echo>| Creating: Axis2 Standard Source Distribution</ant:echo>
        <ant:echo>+----------------------------------------------</ant:echo>

        <ant:property name="std.src.temp.dir" value="target/temp/std/src"/>

        <!-- Copy bin scripts -->
        <ant:copy todir="${std.src.temp.dir}/bin">
            <ant:fileset dir="modules/tool/script"/>
        </ant:copy>

        <ant:copy toDir="${std.src.temp.dir}">
            <ant:fileset dir=".">
                <ant:include name="**/etc/**"/>
                <ant:include name="**/modules/core/**"/>
                <ant:include name="**/modules/common/**"/>
                <ant:include name="**/modules/xml/**"/>
                <ant:include name="**/modules/wsdl/**"/>
                <ant:include name="**/modules/adb/**"/>
                <ant:include name="**/modules/codegen/**"/>
                <ant:include name="**/modules/webapp/**"/>
                <ant:include name="**/modules/doom/**"/>
                <ant:include name="**/modules/addressing/**"/>
                <ant:include name="**/modules/samples/**"/>
                <ant:exclude name="**/SameServiceAddingTest.java"/>
                <!-- TODO: This is failing in the distros. Must Fix it. -->
                <ant:exclude name="**/target/**"/>
                <ant:exclude name="xdocs/**"/>
                <ant:exclude name="**/*class*/**"/>
                <ant:exclude name="**/.svn/**"/>
                <ant:exclude name="**/bin/**"/>
                <ant:exclude name="**/*.log"/>
                <ant:exclude name=".*"/>
                <ant:exclude name="**/*.license"/>
                <ant:exclude name="**/*.iml"/>
            </ant:fileset>
        </ant:copy>
        <ant:copy toDir="${std.src.temp.dir}/etc" overwrite="true" filtering="on">
            <ant:fileset dir="release-docs/release-etc/std"/>
        </ant:copy>

        <!-- Copy the master maven files for the standard src distro -->
        <ant:copy toFile="${std.src.temp.dir}/maven.xml">
            <ant:fileset file="release-docs/maven-scripts/maven-std.xml"/>
        </ant:copy>
        <ant:copy toDir="${std.src.temp.dir}">
            <ant:fileset file="project.xml"/>
        </ant:copy>

        <!-- Copy the release documents -->
        <macros:copy-release-docs toDir="${std.src.temp.dir}"
                                  readmeFile="release-docs/readme-files/README-std-src.txt"/>

        <ant:zip file="${dist.dir}/axis2-std-${pom.currentVersion}-src.zip">
            <ant:fileset dir="${std.src.temp.dir}"/>
        </ant:zip>
        <ant:delete dir="${std.src.temp.dir}"/>
    </goal>

    <goal name="dist-war" prereqs="war">
        <ant:echo>+----------------------------------------------</ant:echo>
        <ant:echo>| Creating: Axis2 WAR Distribution</ant:echo>
        <ant:echo>+----------------------------------------------</ant:echo>
    </goal>

    <goal name="dist-docs" prereqs="init-dist, javadocs">
        <ant:echo>+----------------------------------------------</ant:echo>
        <ant:echo>| Creating: Axis2 Docs Distribution</ant:echo>
        <ant:echo>+----------------------------------------------</ant:echo>

        <ant:mkdir dir="target/dist"/>
        <ant:mkdir dir="target/temp/docs/xdocs"/>
        <ant:mkdir dir="target/temp/docs/javadocs"/>

        <ant:copy toDir="target/temp/docs/xdocs">
            <ant:fileset dir="xdocs"/>
        </ant:copy>

        <!-- Delete 0.93 docs -->
        <ant:delete dir="target/temp/docs/xdocs/0_93"/>


        <ant:copy toDir="target/temp/docs/javadocs">
            <ant:fileset dir="target/apidocs"/>
        </ant:copy>

        <macros:copy-release-docs toDir="target/temp/docs"
                                  readmeFile="release-docs/readme-files/README-docs.txt"/>

        <ant:zip file="${dist.dir}/axis2-${pom.currentVersion}-docs.zip">
            <ant:fileset dir="target/temp/docs"/>
        </ant:zip>
        <ant:delete dir="target/temp/docs"/>

        <ant:echo message="***** IMPORTANT: Please manually copy the Eclipse &amp; IDEA plugins"/>
    </goal>

    <goal name="cache-min-deps" prereqs="init-dist">
        <ant:mkdir dir="${min_dep_cache}"/>
        <j:if test="${minDeps.uptodate != 'yes'}">
            <macros:copy-deps copyToDir="${min_dep_cache}"
                              mods="core,common,xml,wsdl,adb"/>
            <property name="minDeps.uptodate" value="yes"/>
        </j:if>
    </goal>

    <goal name="cache-std-deps" prereqs="init-dist,cache-min-deps">
        <ant:mkdir dir="${std_dep_cache}"/>
        <j:if test="${stdDeps.uptodate != 'yes'}">
            <macros:copy-deps copyToDir="${std_dep_cache}"
                              mods="codegen,doom"/>
            <property name="stdDeps.uptodate" value="yes"/>
        </j:if>
    </goal>

    <!--<goal name="cache-war-deps" prereqs="init-dist,cache-std-deps">-->
    <goal name="cache-war-deps" prereqs="init-dist">
        <ant:mkdir dir="${war_dep_cache}"/>
        <j:if test="${warDeps.uptodate != 'yes'}">
            <macros:copy-deps copyToDir="${war_dep_cache}"
                              mods="webapp"/>
            <property name="warDeps.uptodate" value="yes"/>
        </j:if>
    </goal>

    <!-- ================================================================ -->
    <!--- Create the Java Docs -->
    <!-- ================================================================ -->

    <goal name="javadocs" prereqs="init, create-lib">
        <ant:javadoc packagenames="org.apache.axis2.*"
                     defaultexcludes="yes"
                     destdir="target/apidocs"
                     author="true"
                     breakiterator="true"
                     version="true"
                     use="true"
                     windowtitle="Axis2 API">
            <ant:arg
                    line="-J-Dhttp.proxy.port=${maven.proxy.port} -J-Dhttp.proxy.host=${maven.proxy.host}"/>
            <ant:sourcepath>
                <ant:pathelement location="modules/adb/src"/>
                <ant:pathelement location="modules/addressing/src"/>
                <ant:pathelement location="modules/codegen/src"/>
                <ant:pathelement location="modules/common/src"/>
                <ant:pathelement location="modules/core/src"/>
                <ant:pathelement location="modules/doom/src"/>
                <ant:pathelement location="modules/jaxws/src"/>
                <ant:pathelement location="modules/saaj/src"/>
                <ant:pathelement location="modules/security/src"/>
                <ant:pathelement location="modules/tool/src"/>
                <ant:pathelement location="modules/wsdl/src"/>
                <ant:pathelement location="modules/xml/src"/>
            </ant:sourcepath>
            <ant:classpath>
                <ant:fileset dir="target/lib">
                    <ant:include name="**/*.jar"/>
                </ant:fileset>
            </ant:classpath>
            <ant:excludepackage name="org.apache.axis2.tool.codegen.*"/>
            <ant:excludepackage name="org.apache.axis2.tool.service.*"/>
            <ant:link href="http://java.sun.com/j2se/1.4.2/docs/api/"/>
            <ant:link href="http://java.sun.com/webservices/docs/1.5/api/"/>
            <ant:link href="http://xerces.apache.org/xerces-j/apiDocs/"/>
            <ant:link href="http://xml.apache.org/xalan-j/apidocs/"/>
            <ant:link href="http://xmlbeans.apache.org/docs/2.1.0/reference/"/>
        </ant:javadoc>
    </goal>

    <!-- ================================================================ -->
    <!--- Reports -->
    <!-- ================================================================ -->
    <!-- Conditionally disable linkcheck based on a property. -->

    <postGoal name="xdoc:register-reports">
        <j:if test="${maven.allreports.disable}">
            <echo>Reports are disabled. Deregistering all the reports ....</echo>
            <attainGoal name="maven-linkcheck-plugin:deregister"/>
            <echo>linkcheck is disabled.</echo>
            <attainGoal name="maven-checkstyle-plugin:deregister"/>
            <echo>checkstyle is disabled.</echo>
            <attainGoal name="maven-changes-plugin:deregister"/>
            <echo>changes is disabled.</echo>
            <attainGoal name="maven-changelog-plugin:deregister"/>
            <echo>changelog is disabled.</echo>
            <attainGoal name="maven-license-plugin:deregister"/>
            <echo>license is disabled.</echo>
            <attainGoal name="maven-javadoc-plugin:deregister"/>
            <echo>javadoc is disabled.</echo>
            <attainGoal name="maven-junit-report-plugin:deregister"/>
            <echo>junit-report is disabled.</echo>
            <attainGoal name="maven-tasklist-plugin:deregister"/>
            <echo>tasklist is disabled.</echo>
        </j:if>

    </postGoal>


    <!-- ================================================================ -->
    <!--- Create JUnit test reports -->
    <!-- ================================================================ -->
    <goal name="test-reports">
        <mkdir dir="${basedir}/target/test-reports"/>
        <ant:junitreport todir="${basedir}/target/test-reports">
            <ant:fileset dir="${basedir}/">
                <ant:include name="**/test-reports/TEST-*.xml"/>
                <ant:include name="**/itest-reports/TEST-*.xml"/>
            </ant:fileset>
            <ant:report format="frames" todir="${basedir}/target/test-reports"
                        styledir="${basedir}/etc"/>
        </ant:junitreport>
    </goal>

    <define:taglib uri="macros">
        <define:tag name="copy-deps">
            <ant:echo message="######## MODULES=${mods}"/>
            <ant:echo message="######## Copy2Dir=${copyToDir}"/>

            <j:set var="modules" value="${mods}"/>

            <!-- ######################### REACTOR INIT ##########################################-->

            <j:if test="${context.getVariable('module.types') == null}">
                <j:set var="module.types" value="modules,applications,plugins"/>
            </j:if>

            <j:set var="module.includes" value="${modules}"/>

            <j:if test="${context.getVariable('module.excludes') == null}">
                <j:set var="module.excludes" value=""/>
            </j:if>

            <u:tokenize var="types" delim=",">${module.types}</u:tokenize>

            <ant:fileScanner var="scanner">
                <ant:fileset dir="${basedir}">
                    <j:forEach var="type" items="${types}">
                        <j:choose>
                            <j:when test="${context.getVariable('module.includes') == '*'}">
                                <ant:include name="${type}/*/project.xml"/>
                            </j:when>
                            <j:otherwise>
                                <u:tokenize var="includes" delim=",">${module.includes}</u:tokenize>
                                <j:forEach var="include" items="${includes}">
                                    <u:available file="${basedir}/${type}/${include}/project.xml">
                                        <ant:include name="${type}/${include}/project.xml"/>
                                    </u:available>
                                </j:forEach>
                            </j:otherwise>
                        </j:choose>

                        <j:choose>
                            <j:when test="${context.getVariable('module.excludes') == '*'}">
                                <ant:exclude name="${type}/*/project.xml"/>
                            </j:when>
                            <j:otherwise>
                                <u:tokenize var="excludes" delim=",">${module.excludes}</u:tokenize>
                                <j:forEach var="exclude" items="${excludes}">
                                    <u:available file="${basedir}/${type}/${exclude}/project.xml">
                                        <ant:exclude name="${type}/${exclude}/project.xml"/>
                                    </u:available>
                                </j:forEach>
                            </j:otherwise>
                        </j:choose>
                    </j:forEach>
                </ant:fileset>
            </ant:fileScanner>

            <j:set var="modules.reactor.includes" value=""/>

            <!-- Setup the includes which will be used by the reactor -->
            <j:forEach var="file" items="${scanner.iterator()}">
                <j:set var="directory"
                       value="${file.parentFile.parentFile.name}/${file.parentFile.name}"/>
                <j:set var="filename" value="${directory}/${file.name}"/>
                <j:choose>
                    <j:when test="${context.getVariable('modules.reactor.includes') == null}">
                        <j:set var="modules.directories" value="${directory}"/>
                        <j:set var="modules.reactor.includes" value="${filename}"/>
                    </j:when>
                    <j:otherwise>
                        <j:set var="modules.directories"
                               value="${modules.directories},${directory}"/>
                        <j:set var="modules.reactor.includes"
                               value="${modules.reactor.includes},${filename}"/>
                    </j:otherwise>
                </j:choose>
            </j:forEach>
            <!-- #################### END OF REACTOR INIT #######################################-->

            <ant:echo message="Fetching Dependencies for modules: ${modules.reactor.includes}"/>
            <maven:reactor
                    basedir="${basedir}"
                    postProcessing="true"
                    includes="${modules.reactor.includes}"
                    banner="Executing (${goals}):"
                    ignoreFailures="false"/>
            <j:forEach var="x" items="${reactorProjects}">
                <ant:echo message="Copying ${x} to ${copyToDir}"/>
                <deploy:copy-deps todir="${copyToDir}"
                                  projectDescriptor="${x.getFile()}"/>
            </j:forEach>
            <property name="modules" value="*"/>
        </define:tag>
        <define:tag name="copy-release-docs">
            <ant:copy toFile="${toDir}/README.txt" filtering="on">
                <ant:fileset file="${readmeFile}"/>
            </ant:copy>
            <ant:copy toFile="${toDir}/release-notes.html" filtering="on">
                <ant:fileset file="release-notes.html"/>
            </ant:copy>
            <ant:copy toFile="${toDir}/LICENSE.txt" filtering="on">
                <ant:fileset file="LICENSE.txt"/>
            </ant:copy>
        </define:tag>
    </define:taglib>

</project>

