<?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
     |
     |
   -->

<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>

    <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>

    <preGoal name="build:start">
        <property name="modules" value="core,common,xml,wsdl,adb,codegen,doom,webapp,addressing"/>
    </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="*"/>
        </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>

        <!-- 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">
        <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/common/target/classes"/>
            <fileset dir="modules/xml/target/classes"/>
            <fileset dir="modules/wsdl/target/classes"/>
            <fileset dir="modules/adb/target/classes"/>
            <fileset dir="modules/codegen/target/classes"/>
            <fileset dir="modules/doom/target/classes"/>
            <fileset dir="modules/addressing/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}"/>
    </goal>

    <!-- ================================================================ -->
    <!--- Create the War -->
    <!-- ================================================================ -->
    <goal name="war" prereqs="init, jar">
        <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"/>

        <!-- Copy the 3rd party libs, relevant to minimal bin distro  -->
        <macros:copy-deps copyToDir="target/temp/war/lib"
                          modules="core,common,xml,wsdl,adb"/>

        <!-- 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 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:lib dir="target/temp/war/lib">
                <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 transforme htmls to xdocs -->
    <preGoal name="xdoc:jelly-transform">
        <attainGoal name="html2xdoc"/>
    </preGoal>

    <!-- ================================================================ -->
    <!--- Create the Java Docs -->
    <!-- ================================================================ -->

    <goal name="javadocs" prereqs="init, create-lib">
        <ant:javadoc packagenames="org.apache.axis2.*"
                     defaultexcludes="yes"
                     destdir="target/apidocs"
                     author="true"
                     version="true"
                     use="true"
                     windowtitle="Axis2 API">
            <ant:sourcepath>
                <ant:pathelement location="modules/adb/src"/>
                <ant:pathelement location="modules/addressing/src"/>
                <ant:pathelement location="modules/codegen/src"/>
                <ant:pathelement location="modules/core/src"/>
                <ant:pathelement location="modules/doom/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: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 the Release -->
    <!-- ================================================================ -->
    <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-bin" prereqs="jar,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="bin"/>
        </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 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"/>

        <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="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>

    <!-- ================================================================ -->
    <!--- 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>

