<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright 2005 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.
-->

<project default="default"
    xmlns:j="jelly:core"
    xmlns:ant="jelly:ant"
    xmlns:maven="jelly:maven"
    >

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

    <goal name="default">
        <attainGoal name="jar:install-snapshot"/>
    </goal>

    <goal name="build">
        <attainGoal name="default"/>
    </goal>

    <goal name="rebuild">
        <attainGoal name="clean"/>
        <attainGoal name="build"/>
    </goal>

    <preGoal name="java:compile">
        <available property="jdk5" classname="java.lang.reflect.ParameterizedType"/>
        <!-- Compile with -source 1.5 and -target 1.5 in a JDK5 environment. -->
        <j:if test="${jdk5}">
            <j:set var="maven.compile.source" value="1.5"/>
            <j:set var="maven.compile.target" value="1.5"/>
        </j:if>
    </preGoal>

    <goal name="clobber" prereqs="clean">
        <delete>
            <fileset dir="." defaultexcludes="no" includes="**/*~"/>
        </delete>
    </goal>

</project>
