<?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="ivy" xmlns:ivy="antlib:org.apache.ivy.ant">
  <description>Targets for ivy.xml creation/handling</description>

  <dirname property="common.basedir" file="${ant.file.ivy}"/>
  <import file="${common.basedir}/common-tasks.xml"/>

  <!-- ========================================================== -->
  <!-- init all the Ivy support   -->
  <!-- ========================================================== -->
  <target name="ivy-init"
          depends="setup">
    <property name="target.ivy.xml"
              location="${build.lib}/${artifact.stub}-ivy.xml"/>

    <!--look for a template Ivy file -->
    <property name="project.ivy.xml" location="ivy.xml"/>
    <available property="project.has-ivy.xml?" file="${project.ivy.xml}"/>
    <condition property="generate-default-ivy.xml?">
      <and>
        <not>
          <isset property="project.has-ivy.xml?"/>
        </not>
        <not>
          <uptodate targetfile="${target.ivy.xml}">
            <srcresources>
              <file file="${common.basedir}/build.xml"/>
              <file file="${common.basedir}/ivy.xml"/>
              <file file="version.properties"/>
              <file file="${target.jar}"/>
            </srcresources>
          </uptodate>
        </not>
      </and>
    </condition>
  </target>


  <!-- ========================================================== -->
  <!-- ivy.xml creation/copy, depending on whether it exists or not   -->
  <!-- ========================================================== -->

  <!--copy an existing template-->
  <target name="copy-ivy.xml" depends="ivy-init" if="project.has-ivy.xml?">
    <expandingcopy file="${project.ivy.xml}" tofile="${target.ivy.xml}"/>
  </target>


  <!-- inline creation of a zero dependency ivy.xml.
    We don't even declare a dependency on ant!
  -->
  <target name="make-ivy.xml" depends="ivy-init" if="generate-default-ivy.xml?">
    <echo message="Creating ivy.xml ${target.ivy.xml}" level="verbose"/>
    <echo file="${target.ivy.xml}"><![CDATA[
      <ivy-module version="2.0">
        <info organisation="org.apache.ant"
              module="${artifact.name}"
              revision="${artifact.version}"
              publication="${artifact.publication.datetime}">
          <license name="Apache Software License 2.0"
                   url="http://www.apache.org/licenses/LICENSE-2.0"/>
          <ivyauthor name="Apache Ant Development Team"
                     url="http://ant.apache.org/"/>
        </info>
        <publications xmlns:e="urn:ant.apache.org:ivy-extras">
          <artifact name="${artifact.name}" type="pom" ext="pom"/>
          <artifact name="${artifact.name}" type="pom.asc" ext="pom.asc"/>
          <artifact name="${artifact.name}" type="jar" ext="jar"/>
          <artifact name="${artifact.name}" type="jar.asc" ext="jar.asc"/>
          <artifact name="${artifact.name}" type="source" ext="jar"
                    e:classifier="sources"/>
          <artifact name="${artifact.name}" type="source.asc" ext="jar.asc"
                    e:classifier="sources"/>
          <artifact name="${artifact.name}" type="javadoc" ext="jar"
                    e:classifier="javadoc"/>
          <artifact name="${artifact.name}" type="javadoc.asc" ext="jar.asc"
                    e:classifier="javadoc"/>
          <artifact name="${artifact.name}" type="ivy" ext="xml"
                    e:classifier="ivy"/>
          <artifact name="${artifact.name}" type="ivy.asc" ext="xml.asc"
                    e:classifier="ivy"/>
        </publications>
      </ivy-module>
 ]]></echo>
  </target>

  <target name="ivy.xml" depends="copy-ivy.xml,make-ivy.xml">
    <checksums>
      <file file="${target.ivy.xml}"/>
    </checksums>
  </target>
 

  <!-- ========================================================== -->
  <!-- Bootstraping Ivy as in http://ant.apache.org/ivy/history/latest-milestone/samples/build.xml -->
  <!-- ========================================================== -->

  
  <target name="download-ivy" if="with.ivy" depends="setup-properties">
    <mkdir dir="${ivy.jar.dir}"/>
    <!-- download Ivy from web site so that it can be used even without any special installation -->
    <echo message="installing ivy..."/>
    <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" dest="${ivy.jar.file}" usetimestamp="true"/>
  </target>
  
  <!-- ================================= 
    target: install-ivy         
    this target is not necessary if you put ivy.jar in your ant lib directory
    if you already have ivy in your ant lib, you can simply remove this
    target and the dependency the 'go' target has on it
  ================================= -->
  <target name="install-ivy" if="with.ivy" depends="download-ivy" description="--> install ivy">
    <!-- try to load ivy here from local ivy dir, in case the user has not already dropped
    it into ant's lib dir (note that the latter copy will always take precedence).
    We will not fail as long as local lib dir exists (it may be empty) and
    ivy is in at least one of ant's lib dir or the local lib dir. -->
    <path id="ivy.lib.path">
      <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
    </path>
    <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
  </target>
  

  <!-- ========================================================== -->
  <!-- Standard Ivy targets   -->
  <!-- ========================================================== -->

  <target name="resolve" depends="install-ivy,-no-resolve" if="with.ivy" unless="no.resolve">
    <ivy:resolve file="ivy.xml"/>    
    <ivy:retrieve conf="default" pattern="${lib.dir.compile}/[artifact].[ext]" sync="yes"/>
    <ivy:retrieve conf="test" pattern="${lib.dir.test}/[artifact].[ext]" sync="yes"/>
    <ivy:cachepath pathid="classpath.compile" conf="default"/>
    <ivy:cachepath pathid="classpath.test" conf="default,test"/>
  </target>
  
  <target name="-no-resolve" unless="with.ivy">
    <path id="classpath.compile"/>
    <path id="classpath.test"/>
  </target>

    

</project>
 
