<?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.
-->
<ivy-module version="1.0">
  <info organisation="org.apache.hadoop" module="${ant.project.name}">
    <license name="Apache 2.0"/>
    <description>Rumen</description>
  </info>
  <configurations defaultconfmapping="default">
    <!--these match the Maven configurations-->
    <conf name="default" extends="master,runtime"/>
    <conf name="master" description="contains the artifact but no dependencies"/>
    <conf name="runtime" description="runtime but not the artifact" />

    <conf name="common" visibility="private" extends="runtime"
      description="artifacts needed to compile/test the application"/>
    <conf name="test" visibility="private" extends="runtime"/>
  </configurations>

  <publications>
    <!--get the artifact from our module name-->
    <artifact conf="master"/>
  </publications>
  <dependencies>
    <dependency org="org.apache.hadoop"
      name="hadoop-common"
      rev="${hadoop-common.version}"
      conf="common->default"/>
    <dependency org="org.apache.hadoop"
      name="hadoop-common-test"
      rev="${hadoop-common.version}"
      conf="test->default"/>
    <dependency org="org.apache.hadoop"
      name="hadoop-hdfs"
      rev="${hadoop-hdfs.version}"
      conf="common->default"/>
    <dependency org="org.apache.hadoop"
      name="hadoop-hdfs-test"
      rev="${hadoop-hdfs.version}"
      conf="test->default"/>
    <dependency org="commons-logging"
      name="commons-logging"
      rev="${commons-logging.version}"
      conf="common->default"/>
    <dependency org="log4j"
      name="log4j"
      rev="${log4j.version}"
      conf="common->master"/>
    <dependency org="junit"
      name="junit"
      rev="${junit.version}"
      conf="common->default"/>

    <!-- necessary for Mini*Clusters -->
    <dependency org="commons-httpclient"
      name="commons-httpclient"
      rev="${commons-httpclient.version}"
      conf="common->master"/>
    <dependency org="commons-codec"
      name="commons-codec"
      rev="${commons-codec.version}"
      conf="common->default"/>
    <dependency org="commons-net"
      name="commons-net"
      rev="${commons-net.version}"
      conf="common->default"/>
    <dependency org="org.mortbay.jetty"
      name="jetty"
      rev="${jetty.version}"
      conf="common->master"/>
    <dependency org="org.mortbay.jetty"
      name="jetty-util"
      rev="${jetty-util.version}"
      conf="common->master"/>
    <dependency org="org.mortbay.jetty"
      name="jsp-api-2.1"
      rev="${jetty.version}"
      conf="common->master"/>
    <dependency org="org.mortbay.jetty"
      name="jsp-2.1"
      rev="${jetty.version}"
      conf="common->master"/>
    <dependency org="org.mortbay.jetty"
      name="servlet-api-2.5"
      rev="${servlet-api-2.5.version}"
      conf="common->master"/>
    <dependency org="commons-cli"
      name="commons-cli"
      rev="${commons-cli.version}"
      conf="common->default"/>
    <dependency org="org.apache.hadoop"
      name="avro"
      rev="${avro.version}"
      conf="common->default">
      <exclude module="ant"/>
      <exclude module="jetty"/>
      <exclude module="slf4j-simple"/>
    </dependency>
    <dependency org="org.codehaus.jackson"
      name="jackson-mapper-asl"
      rev="${jackson.version}"
      conf="common->default"/>
    <dependency org="org.codehaus.jackson"
      name="jackson-core-asl"
      rev="${jackson.version}"
      conf="common->default"/>
    <dependency org="com.thoughtworks.paranamer"
      name="paranamer"
      rev="${paranamer.version}"
      conf="common->default"/>
  </dependencies>
</ivy-module>
