<?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/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="commons-httpclient-*.jar"/>
						<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="commons-httpclient-*.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=".*"/> 
        		        <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=".*"/>
          		        <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>

