<?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
     |
     | dist-src
     | 	Source Distribution
     |
     | dist-bin
     |  	Binary Distribution
     |
   -->

<project default="jar"
    xmlns:j="jelly:core"
    xmlns:u="jelly:util"
    xmlns:deploy="deploy"
    xmlns:ant="jelly:ant"
    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"/>
    
    <!-- ======= -->
    <!-- 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">
        <attainGoal name="multiproject:install"/>
        <attainGoal name="create-jar"/>
        <ant:copy file="target/lib/axis2-${pom.currentVersion}.jar"
            toDir="target/"/>
    </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.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">
        <attainGoal name="modules:clean"/>
    </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="create-jar" prereqs="init">
        <jar destfile="target/lib/axis2-${pom.currentVersion}.jar">
            <fileset dir="modules/core/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/">
                <include name="modules/addressing.mar"/>
            </fileset>
        </jar>
    </goal>

    <goal name="create-lib">
        <attainGoal name="modules:reactor:init"/>
        <maven:reactor
            basedir="${basedir}"
            postProcessing="true"
            includes="${modules.reactor.includes}"
            banner="Executing (${goals}):"
            ignoreFailures="false"/>
        <j:forEach var="x" items="${reactorProjects}">
            <ant:echo message="${x}"/>
            <deploy:copy-deps todir="target/lib"
                projectDescriptor="${x.getFile()}"/>
        </j:forEach>
    </goal>

    <!-- ================================================================ -->
    <!--- Create the War -->
    <!-- ================================================================ -->


    <goal name="war" prereqs="init">
        <j:if test="${jars.uptodate != 'yes'}">
            <attainGoal name="jar"/>
            <attainGoal name="create-lib"/>
        </j:if>
        <!-- jar the test classes -->
        <ant:war destfile="target/axis2.war" webxml="modules/core/conf/web.xml">
            <ant:fileset dir="modules/core/webapp"/>
            <ant:lib dir="target/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/samples/target/toWar/"/>
            <ant:webinf dir="modules/core/src/org/apache/axis2/deployment">
                <ant:include name="*.xml"/>
            </ant:webinf>
        </ant:war>
    </goal>
    <!-- to transforme htmls to xdocs -->
    <preGoal name="xdoc:jelly-transform">
        <attainGoal name="html2xdoc"/>
    </preGoal>

    <!-- ================================================================ -->
    <!--- Create the Binary Distribution -->
    <!-- ================================================================ -->

    <goal name="dist-bin" prereqs="war,javadoc-gen,create-lib">
        <property name="bin.dist.dir" value="target/dist-bin/axis2-${pom.currentVersion}-bin"/>
        <ant:mkdir dir="${bin.dist.dir}"/>
        <ant:mkdir dir="${bin.dist.dir}/docs"/>
        <ant:mkdir dir="${bin.dist.dir}/bin"/>
        <ant:mkdir dir="${bin.dist.dir}/lib"/>
        <ant:mkdir dir="${bin.dist.dir}/samples"/>
        <ant:mkdir dir="${bin.dist.dir}/webapps"/>
        <ant:mkdir dir="${bin.dist.dir}/docs/api"/>

        <ant:copy todir="${bin.dist.dir}/docs/api">
            <ant:fileset dir="target/apidocs/">
                <ant:include name="**"/>
            </ant:fileset>
        </ant:copy>
        <ant:copy todir="${bin.dist.dir}/docs">
            <ant:fileset dir="xdocs">
                <ant:include name="**"/>
                <ant:exclude name="*M1*/**"/>
            </ant:fileset>
        </ant:copy>
        <ant:copy todir="${bin.dist.dir}/lib" flatten="true">
            <ant:fileset dir="target/lib">
                <ant:include name="*.jar"/>
                <ant:exclude name="**servlet**.jar"/>
                <ant:exclude name="ant*.jar"/>
                <ant:exclude name="commons-fileupload-*.jar"/>
            </ant:fileset>
        </ant:copy>
        <ant:copy file="target/axis2.war" tofile="${bin.dist.dir}/webapps/axis2.war"/>
        <ant:copy file="modules/samples/script/build.xml" tofile="${bin.dist.dir}/samples/build.xml"/>
        <ant:copy todir="${bin.dist.dir}/samples">
            <ant:fileset dir="modules/samples/conf/">
                <ant:include name="*.xml"/>
            </ant:fileset>
        </ant:copy>
        <ant:copy todir="${bin.dist.dir}/samples">
            <ant:fileset dir="modules/samples/target/samples">
                <include name="**"/>
            </ant:fileset>
        </ant:copy>
        <ant:copy todir="${bin.dist.dir}/">
            <ant:fileset dir=".">
                <ant:include name="*.html"/>
                <ant:include name="*.txt"/>
            </ant:fileset>
        </ant:copy>

        <ant:mkdir dir="${bin.dist.dir}/repository"/>
        <ant:mkdir dir="${bin.dist.dir}/repository/services"/>
        <ant:mkdir dir="${bin.dist.dir}/repository/modules"/>
        <ant:copy todir="${bin.dist.dir}/repository">
            <ant:fileset dir="modules/samples/target/toWar/">
                <ant:include name="**"/>
            </ant:fileset>
        </ant:copy>


        <ant:copy todir="${bin.dist.dir}/bin">
            <ant:fileset dir="modules/tool/script"/>
        </ant:copy>

        <ant:zip file="${dist.dir}/${dist.name}-bin.zip" basedir="target/dist-bin"/>
        <ant:tar tarfile="target/${dist.name}-bin.tar" basedir="target/dist-bin"/>
        <gzip src="target/${dist.name}-bin.tar" zipfile="${dist.dir}/${dist.name}-bin.tar.gz"/>
        <ant:delete dir="target/dist-bin"/>
        <ant:delete file="target/${dist.name}-bin.tar"/>
    </goal>

    <!-- ================================================================ -->
    <!--- Create the Source Distribution -->
    <!-- ================================================================ -->

    <goal name="dist-src" prereqs="init">
        <ant:zip file="${dist.dir}/${dist.name}-src.zip">
            <ant:fileset dir=".">
                <ant:include name="**"/>
                <ant:exclude name="**/target/**"/>
                <ant:exclude name="**/.svn/**"/>
                <ant:exclude name="**/bin/**"/>
                <ant:exclude name="**/*.log"/>
                <ant:exclude name=".*"/>
                <ant:exclude name="**/*.license"/>
            </ant:fileset>
        </ant:zip>
        <ant:tar tarfile="target/${dist.name}-src.tar" longfile="gnu">
            <ant:tarfileset dir=".">
                <ant:include name="**"/>
                <ant:exclude name="**/target/**"/>
                <ant:exclude name="**/.svn/**"/>
                <ant:exclude name="**/bin/**"/>
                <ant:exclude name="**/*.log"/>
                <ant:exclude name=".*"/>
                <ant:exclude name="**/*.license"/>
            </ant:tarfileset>
        </ant:tar>
        <gzip src="target/${dist.name}-src.tar" zipfile="${dist.dir}/${dist.name}-src.tar.gz"/>
        <ant:delete file="target/${dist.name}-src.tar"/>
    </goal>

    <!-- ================================================================ -->
    <!--- Create the Java Docs -->
    <!-- ================================================================ -->

    <goal name="javadoc-gen" prereqs="init">
        <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/core/src"/>
                <ant:pathelement location="modules/wsdl/src"/>
                <ant:pathelement location="modules/xml/src"/>
            </ant:sourcepath>
        </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>

</project>

