<?xml version="1.0"?>
<!--
 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 name="maven" default="maven:jar" basedir=".">

  <!-- Give user a chance to override without editing this file
       (and without typing -D each time they invoke a target) -->

  <!-- Allow any user specific values to override the defaults -->
  <property file="${user.home}/build.properties" />
  <!-- Allow user defaults for this project -->
  <property file="build.properties" />
  <!-- Set default values for the build -->
  <property file="project.properties" />

  <target
    name="jcs:test-prepare">

    <!-- Make directory for log output from tests (distinct from reports) -->

    <mkdir dir="target/test-sandbox/logs/jcs"/>

    <!-- Copy test config files to the test build dir -->

    <copy todir="target/test-classes">
        <fileset dir="src/test-conf"/>
    </copy>

  </target>

  <target name="jcs:copy-classpath-vm">
    <copy todir="${maven.build.dest}">
        <fileset dir="src/java" includes="**/*.vm"/>
    </copy>
  </target>

  <!-- The targets people are used to -->

  <target name="clean" depends="maven:compile"/>
  <target name="compile" depends="maven:compile"/>
  <target name="test" depends="maven:test"/>
  <target name="jar" depends="maven:jar"/>


  <!-- maven:start -->

  <!-- ================================================================== -->
  <!-- D E L E G A T O R S                                                -->
  <!-- ================================================================== -->


    <target name="maven:gump-descriptor">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="gump-descriptor"/>
    </target>


    <target name="maven:maven-update">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="maven-update"/>
    </target>


    <target name="maven:update-jars">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="update-jars"/>
    </target>


    <target name="maven:jar">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="jar"/>
    </target>


    <target name="maven:docs-quick">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="docs-quick"/>
    </target>


    <target name="maven:run-singletest">
      <ant antfile="${maven.home}/plugins/test/build.xml" target="run-singletest"/>
    </target>


    <target name="maven:compile">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="compile"/>
    </target>


    <target name="maven:fo">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="fo"/>
    </target>


    <target name="maven:cvs-change-log">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="cvs-change-log"/>
    </target>


    <target name="maven:war">
      <ant antfile="${maven.home}/plugins/j2ee/build.xml" target="war"/>
    </target>


    <target name="maven:generate-reactor">
      <ant antfile="${maven.home}/plugins/reactor/build.xml" target="generate-reactor"/>
    </target>


    <target name="maven:cross-ref">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="cross-ref"/>
    </target>


    <target name="maven:deploy-site">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="deploy-site"/>
    </target>


    <target name="maven:ear">
      <ant antfile="${maven.home}/plugins/j2ee/build.xml" target="ear"/>
    </target>


    <target name="maven:install-jar">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="install-jar"/>
    </target>


    <target name="maven:task-list">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="task-list"/>
    </target>


    <target name="maven:docs">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="docs"/>
    </target>


    <target name="maven:site">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="site"/>
    </target>


    <target name="maven:deploy-dist">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="deploy-dist"/>
    </target>


    <target name="maven:javadocs">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="javadocs"/>
    </target>


    <target name="maven:announce">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="announce"/>
    </target>


    <target name="maven:check-source">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="check-source"/>
    </target>


    <target name="maven:dist">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="dist"/>
    </target>


    <target name="maven:dist-build">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="dist-build"/>
    </target>


    <target name="maven:metrics">
      <ant antfile="${maven.home}/plugins/metrics/build.xml" target="metrics"/>
    </target>


    <target name="maven:clean">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="clean"/>
    </target>


    <target name="maven:env">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="env"/>
    </target>


    <target name="maven:test">
      <ant antfile="${maven.home}/plugins/test/build.xml" target="test"/>
    </target>


    <target name="maven:pdf">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="pdf"/>
    </target>


    <target name="maven:iutest">
      <ant antfile="${maven.home}/plugins/iutest/build.xml" target="iutest"/>
    </target>


    <target name="maven:activity-log">
      <ant antfile="${maven.home}/plugins/docs/build.xml" target="activity-log"/>
    </target>


    <target name="maven:verify-project">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="verify-project"/>
    </target>


    <target name="maven:validate-pom">
      <ant antfile="${maven.home}/plugins/core/build.xml" target="validate-pom"/>
    </target>


    <target name="maven:validate-war">
      <ant antfile="${maven.home}/plugins/j2ee/build.xml" target="validate-war"/>
    </target>


  <!-- maven:end -->

</project>
