<!--
   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="retrieve-ivy-deps" default="retrieve-all" 
		xmlns:ivy="antlib:org.apache.ivy.ant">

	<target name="init-ivy">
		<taskdef resource="org/apache/ivy/ant/antlib.xml"
				uri="antlib:org.apache.ivy.ant">
			<classpath>
				<pathelement location="ivy.jar" />
			</classpath>
		</taskdef>
	</target>
	
	<target name="report">
		<ivy:report graph="false" todir="report" />
		<echo>
=======================================================================
Dependencies retrieved in lib directory
Dependency report generated in report directory
=======================================================================
		</echo>
	</target>
	
	<target name="retrieve-conf" depends="init-ivy"
			description="--> Retrieves a set of configuration (get only dependencies needed).">
		<ivy:info file="ivy.xml" />
		<echo>
=======================================================================
Please enter configuration (or comma separated list of configurations).
Available configurations are: ${ivy.configurations}</echo>
		<input message="Configuration(s):" addproperty="ivy.confs"/>
		<ivy:retrieve conf="${ivy.confs}"/>
		<antcall target="report" inheritRefs="true" />
	</target>
	
	<target name="retrieve-all" depends="init-ivy"
			description="--> Retrieves all Ivy dependencies into the lib directory">
		<ivy:retrieve />
		<antcall target="report" inheritRefs="true" />
	</target>
</project>