<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to you 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.
-->
<project 
    xmlns:j="jelly:core"
    xmlns:ant="jelly:ant"
    xmlns:maven="jelly:maven"
    xmlns:u="jelly:util"
    >

    <!-- ==================== -->
    <!-- Default Global Goals -->
    <!-- ==================== -->

    <goal name="help">
        <echo>Custom goals for this project are:</echo>
        <echo>  jdo3.build   - builds all JDO 3 projects</echo>
        <echo>  jdo3.default - calls the default goal for all JDO 3 projects</echo>
        <echo>  jdo3.clean   - cleans all JDO 3 projects</echo>
        <echo>  jdo2.build   - builds all JDO2 projects</echo>
        <echo>  jdo2.default - calls the default goal for  all JDO2 projects</echo>
        <echo>  jdo2.clean   - cleans all JDO2 projects</echo>
        <echo>  tck2.build   - builds tck2 and dependent JDO2 projects</echo>
        <echo>  tck2.default - calls the default goal for tck2 and dependent JDO2 projects</echo>
        <echo>  tck2.clean   - cleans tck2 and dependent JDO2 projects</echo>
        <echo>  tck2.dist    - creates distributions of tck2 and dependent JDO2 projects</echo>
        <echo>  fostore20.clean   - cleans fostore20 and dependencies</echo>
        <echo>  fostore20.build   - builds fostore20 and dependencies</echo>
        <echo>  fostore20.default - calls the default goal for fostore20 and dependencies</echo>
        <echo>  jdo11.build   - builds all JDO1 projects</echo>
        <echo>  jdo11.default - calls the default goal for all JDO1 projects</echo>
        <echo>  jdo11.clean   - cleans all JDO1 projects</echo>
        <echo>Please check README.txt for more details.</echo>
    </goal>

    <!-- ========== -->
    <!-- JDO1 Goals -->
    <!-- ========== -->

    <goal name="jdo3.build" 
          description="Builds all JDO 3 projects">
        <j:set var="maven.multiproject.includes">${jdo3.projects}</j:set>
        <j:set var="goal">build</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal>

    <goal name="jdo3.default" 
          description="Calls the default goal for all JDO 3 projects">
        <j:set var="maven.multiproject.includes">${jdo3.projects}</j:set>
        <j:set var="goal">default</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal>

    <goal name="jdo3.clean" 
          description="Cleans all JDO 3 projects">
        <j:set var="maven.multiproject.includes">${jdo3.projects}</j:set>
        <attainGoal name="multiproject:clean"/>
    </goal>

    <!-- ========== -->
    <!-- JDO2 Goals -->
    <!-- ========== -->

    <goal name="jdo2.build"
          description="Builds all JDO2 projects">
        <j:set var="maven.multiproject.includes">${jdo2.projects}</j:set>
        <j:set var="goal">build</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal>

    <goal name="jdo2.default"
          description="Calls the default goal for all JDO2 projects">
        <j:set var="maven.multiproject.includes">${jdo2.projects}</j:set>
        <j:set var="goal">default</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal>

    <goal name="jdo2.clean"
          description="Cleans all JDO2 projects">
        <j:set var="maven.multiproject.includes">${jdo2.projects}</j:set>
        <attainGoal name="multiproject:clean"/>
    </goal>

    <goal name="tck2.build"
          description="Builds tck2 and dependent JDO2 projects">
        <j:set var="maven.multiproject.includes">${tck2.projects}</j:set>
        <j:set var="goal">build</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal>

    <goal name="tck2.default"
          description="Calls the default goal for tck2 and dependent JDO2 projects">
        <j:set var="maven.multiproject.includes">${tck2.projects}</j:set>
        <j:set var="goal">default</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal>

    <goal name="tck2.clean"
          description="Cleans tck2 and dependent JDO2 projects">
        <j:set var="maven.multiproject.includes">${tck2.projects}</j:set>
        <attainGoal name="multiproject:clean"/>
    </goal>

    <goal name="tck2.dist"
          description="Creates distributions of tck2 and dependent JDO2 projects">
        <j:set var="maven.multiproject.includes">${tck2.projects}</j:set>
        <j:set var="goal">dist</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal> 

    <goal name="fostore20.build"
      description="Builds fostore20 and dependencies">
        <j:set var="maven.multiproject.includes">${fostore20.projects}</j:set>
        <j:set var="goal">build</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal>

    <goal name="fostore20.default"
      description="Calls the default goal for fostore20 and dependencies">
        <j:set var="maven.multiproject.includes">${fostore20.projects}</j:set>
        <j:set var="goal">default</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal>

    <goal name="fostore20.clean"
    description="Cleans fostore20 and dependencies">
        <j:set var="maven.multiproject.includes">${fostore20.projects}</j:set>
        <attainGoal name="multiproject:clean"/>
    </goal>
  
    <!-- ========== -->
    <!-- JDO1 Goals -->
    <!-- ========== -->

    <goal name="jdo11.build" 
          description="Builds all JDO1 projects">
        <j:set var="maven.multiproject.includes">${jdo11.projects}</j:set>
        <j:set var="goal">build</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal>

    <goal name="jdo11.default" 
          description="Calls the default goal for all JDO1 projects">
        <j:set var="maven.multiproject.includes">${jdo11.projects}</j:set>
        <j:set var="goal">default</j:set>
        <attainGoal name="multiproject:goal"/>
    </goal>

    <goal name="jdo11.clean" 
          description="Cleans all JDO1 projects">
        <j:set var="maven.multiproject.includes">${jdo11.projects}</j:set>
        <attainGoal name="multiproject:clean"/>
    </goal>

    <!-- ==== -->
    <!-- Misc -->
    <!-- ==== -->

    <goal name="multiproject:clean">
        <attainGoal name="multiproject:projects-init"/>
        <maven:reactor
            basedir="${maven.multiproject.basedir}"
            banner="Gathering project list"
            includes="${maven.multiproject.includes}"
            excludes="${maven.multiproject.excludes}"
            postProcessing="true"
            ignoreFailures="${maven.multiproject.ignoreFailures}"
            collectionVar="reactorProjects"
            collectOnly="true" />
        <j:forEach var="reactorProject" items="${reactorProjects}">
            <j:set var="_clean_dir">${reactorProject.context.getVariable("maven.build.dest")}</j:set>
            <ant:delete dir="${_clean_dir}" failonerror="false" />
            <j:set var="_clean_dir">${reactorProject.context.getVariable("maven.build.dir")}</j:set>
            <ant:delete dir="${_clean_dir}" failonerror="false" />
            <j:set var="_basedir">${reactorProject.context.getVariable("basedir")}</j:set>
            <ant:delete file="${_basedir}/velocity.log" quiet="true" failonerror="false" />
            <ant:delete file="${_basedir}/velocity.log.1" quiet="true" failonerror="false" />
            <ant:delete file="${_basedir}/jcoverage.ser" quiet="true" failonerror="false" />
        </j:forEach>
    </goal>

    <!-- ==================== -->
    <!-- Distribution support -->
    <!-- ==================== -->

    <preGoal name="dist:build-src">
        <echo>Copying top-level project.xml, project.properties, LICENSE.txt, NOTICE.txt, and README.txt to ${maven.dist.src.archive.dir}</echo>
        <copy toDir="${maven.dist.src.archive.dir}">
             <fileset dir="${basedir}/..">
                 <include name="project.properties"/>
                 <include name="project.xml"/>
                 <include name="README.txt"/>
                 <include name="LICENSE.txt"/>
                 <include name="NOTICE.txt"/>
             </fileset>
        </copy>
        <echo>Creating ${maven.dist.src.archive.dir}/lib/ext</echo>
        <mkdir dir="${maven.dist.src.archive.dir}/lib/ext"/>
    </preGoal>

    <preGoal name="dist:build-bin">
        <echo>Copying top-level LICENSE.txt, NOTICE.txt, and README.txt to ${maven.dist.bin.archive.dir}</echo>
        <copy toDir="${maven.dist.bin.archive.dir}">
             <fileset dir="${basedir}/..">
                 <include name="README.txt"/>
                 <include name="LICENSE.txt"/>
                 <include name="NOTICE.txt"/>
             </fileset>
        </copy>
    </preGoal>

    <postGoal name="dist">
        <attainGoal name="copy-release-artifacts"/>
    </postGoal>

    <goal name="copy-release-artifacts">
        <attainGoal name="copy-distribution"/>
        <attainGoal name="copy-dependency-artifacts"/>
    </goal>

    <goal name="copy-dependency-artifacts">
        <mkdir dir="${jdo.releases.dist.dir}/m1-ibiblio-rsync-repository/${pom.groupId}/jars"/>
        <mkdir dir="${jdo.releases.dist.dir}/m1-ibiblio-rsync-repository/${pom.groupId}/poms"/>

        <!-- Copy the artifacts for the remote repository -->
        <copy file="${maven.build.dir}/${maven.final.name}.jar" 
              todir="${jdo.releases.dist.dir}/m1-ibiblio-rsync-repository/${pom.groupId}/jars"/>
        <copy file="project.xml" 
              toFile="${jdo.releases.dist.dir}/m1-ibiblio-rsync-repository/${pom.groupId}/poms/${maven.final.name}.pom" />

        <copy file="m2_repo_maven_metadata.xml"
              toFile="${jdo.releases.dist.dir}/m2-ibiblio-rsync-repository/javax/jdo/${pom.artifactId}/maven-metadata.xml"
              failonerror="false"/>
    </goal>

    <goal name="copy-distribution">
        <mkdir dir="${jdo.releases.dist.dir}/db/jdo/${pom.currentVersion}"/>
         <!-- Copy distributions -->
        <copy todir="${jdo.releases.dist.dir}/db/jdo/${pom.currentVersion}">
            <fileset dir="${maven.build.dir}/distributions"/>
        </copy>
    </goal>

</project>
