<?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" xmlns:m="http://ant.apache.org/ivy/maven">
  <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-annotations"
      rev="${hadoop-common.version}"
      conf="common->default"/>
    <dependency org="org.apache.hadoop"
      name="hadoop-common"
      rev="${hadoop-common.version}"
      conf="common->default"/>
    <dependency org="org.apache.hadoop"
      name="hadoop-common"
      rev="${hadoop-common.version}"
      conf="test->default">
      <artifact name="hadoop-common" type="tests" ext="jar" m:classifier="tests"/>
    </dependency>
    <dependency org="org.apache.hadoop"
      name="hadoop-hdfs"
      rev="${hadoop-hdfs.version}"
      conf="common->default"/>
    <dependency org="org.apache.hadoop"
      name="hadoop-hdfs"
      rev="${hadoop-hdfs.version}"
      conf="test->default">
      <artifact name="hadoop-hdfs" type="tests" ext="jar" m:classifier="tests"/>
    </dependency>
  <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-core" 
               rev="${yarn.version}" conf="common->default"/>
   <dependency org="org.apache.hadoop" name="hadoop-yarn-common"
               rev="${yarn.version}" conf="common->default"/>
   <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-jobclient"
               rev="${yarn.version}" conf="test->default">
     <artifact name="hadoop-mapreduce-client-jobclient" type="tests" ext="jar" m:classifier="tests"/>
   </dependency>
   <dependency org="org.apache.hadoop" name="hadoop-archives" 
               rev="${hadoop-common.version}" conf="common->default"/> 
   <dependency org="org.apache.hadoop" name="hadoop-rumen" 
               rev="${hadoop-common.version}" conf="common->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.avro"
      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"/>

   <!-- Exclusions for transitive dependencies pulled in by log4j -->
   <exclude org="com.sun.jdmk"/>
   <exclude org="com.sun.jmx"/>
   <exclude org="javax.jms"/> 
   <exclude org="javax.mail"/> 

  </dependencies>
</ivy-module>
