<?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:modules="local:modules"
    xmlns:ant="jelly:ant"
    xmlns:plugin="plugin"
    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"/>

    <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="*"/>
        </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.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="all-tests">
        <modules:reactor goals="jar:install,test,itest"/>
    </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/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,javadocs">
        <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}/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="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="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/addressing/src"/>
                <ant:pathelement location="modules/codegen/src"/>
                <ant:pathelement location="modules/common/src"/>
                <ant:pathelement location="modules/core/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: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>
</project>

