<!--
   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}" revision="${version}">
    <license name="Apache 2.0"/>
    <ivyauthor name="Apache Hadoop Team" url="http://hadoop.apache.org"/>
    <description>
        Hadoop Core
    </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="compile" description="contains the artifact but no dependencies"/>
    <conf name="runtime" description="runtime but not the artifact"/>

    <!--
    These public configurations contain the core dependencies for running hadoop client or server.
    The server is effectively a superset of the client.
    -->
    <!--Private configurations. -->

    <conf name="common" visibility="private" extends="compile" description="common artifacts"/>
    <conf name="mapred" visibility="private" extends="compile,runtime" description="Mapred dependent artifacts"/>
    <conf name="javadoc" visibility="private" description="artiracts required while performing doc generation" extends="common"/>
    <conf name="test" extends="master" visibility="private" description="the classpath needed to run tests"/>
    <conf name="package" extends="master" description="the classpath needed for packaging"/>
    <conf name="system" extends="test" visibility="private" description="the classpath needed to run system tests"/>

    <conf name="test-hdfswithmr" extends="test" visibility="private" description="the classpath needed to run tests"/>

    <conf name="releaseaudit" visibility="private" description="Artifacts required for releaseaudit target"/>
     
    <conf name="jdiff" visibility="private" extends="common"/>
    <conf name="checkstyle" visibility="private"/>

  </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="compile->default"/>
   <dependency org="org.apache.hadoop" name="hadoop-common" 
               rev="${hadoop-common.version}" conf="compile->default">
     <artifact name="hadoop-common" ext="jar" />
     <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="compile->default"/> 
   <dependency org="org.apache.hadoop" name="hadoop-common-instrumented"
               rev="${hadoop-common.version}" conf="system->default"/>
   <dependency org="org.apache.hadoop" name="hadoop-hdfs-instrumented"
               rev="${hadoop-hdfs.version}" conf="system->default"/>
   <dependency org="commons-logging" name="commons-logging" 
               rev="${commons-logging.version}" conf="compile->master"/>
   <dependency org="org.slf4j" name="slf4j-api" rev="${slf4j-api.version}" 
               conf="compile->master"/>
   <dependency org="org.slf4j" name="slf4j-log4j12" 
               rev="${slf4j-log4j12.version}" conf="mapred->master"/>
   <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-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-yarn-server-common"
               rev="${yarn.version}" conf="compile->default"/>
   <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-core" 
               rev="${yarn.version}" conf="compile->default"/>
   <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-common" 
               rev="${yarn.version}" conf="compile->default"/>
   <dependency org="org.apache.hadoop" name="hadoop-yarn-common"
               rev="${yarn.version}" conf="compile->default"/>
   <dependency org="org.apache.hadoop" name="hadoop-mapreduce-examples"
               rev="${yarn.version}" conf="compile->default"/>
   <dependency org="log4j" name="log4j" rev="${log4j.version}" 
               conf="compile->master"/>
   <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-jobclient"
               rev="${yarn.version}" conf="compile->default">
     <artifact name="hadoop-mapreduce-client-jobclient" type="tests" ext="jar" m:classifier="tests"/>
   </dependency>
   <dependency org="org.apache.hadoop" name="hadoop-rumen" 
               rev="${hadoop-common.version}" conf="compile->default"/> 
   <dependency org="org.apache.hadoop" name="hadoop-archives"
               rev="${hadoop-common.version}" conf="compile->default"/>

   <dependency org="checkstyle" name="checkstyle" rev="${checkstyle.version}"
               conf="checkstyle->default"/>

   <dependency org="jdiff" name="jdiff" rev="${jdiff.version}"
               conf="jdiff->default"/>
   <dependency org="xerces" name="xerces" rev="${xerces.version}"
               conf="jdiff->default"/>

   <dependency org="org.apache.rat" name="apache-rat-tasks" 
               rev="${rats-lib.version}" conf="releaseaudit->default"/>
   <dependency org="commons-lang" name="commons-lang" 
               rev="${commons-lang.version}" conf="releaseaudit->default"/>
   <dependency org="commons-collections" name="commons-collections" 
               rev="${commons-collections.version}" 
               conf="releaseaudit->default"/>

   <dependency org="org.apache.lucene" name="lucene-core" 
               rev="${lucene-core.version}" conf="javadoc->default"/>
   <dependency org="org.apache.avro" name="avro-compiler" rev="${avro.version}" 
               conf="compile->master">
      <exclude module="ant"/>
      <exclude module="jetty"/>
      <exclude module="slf4j-simple"/>
    </dependency>
   <dependency org="org.apache.avro" name="avro" rev="${avro.version}" 
               conf="compile->default">
      <exclude module="ant"/>
      <exclude module="jetty"/>
      <exclude module="slf4j-simple"/>
    </dependency>
   <dependency org="junit" name="junit" rev="${junit.version}"
               conf="test->default"/>
   <dependency org="org.mockito" name="mockito-all" rev="${mockito-all.version}" 
               conf="test->default"/>
   <dependency org="org.vafer" name="jdeb" rev="${jdeb.version}" conf="package->master"/>
   <dependency org="org.mortbay.jetty" name="jetty-servlet-tester" rev="${jetty.version}"
               conf="test->default"/>

   <!-- dependency for rumen anonymization -->
   <dependency org="org.codehaus.jackson" name="jackson-core-asl" rev="${jackson.version}"
               conf="compile->default"/>
   <dependency org="org.codehaus.jackson" name="jackson-mapper-asl" rev="${jackson.version}"
               conf="compile->default"/>

   <!-- dependency addition for the fault injection -->
   <dependency org="org.aspectj" name="aspectjrt" rev="${aspectj.version}"
               conf="compile->default"/>
   <dependency org="org.aspectj" name="aspectjtools" rev="${aspectj.version}"
               conf="compile->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"/> 
   <exclude org="org.apache.hadoop" module="avro"/> 
   <exclude org="org.apache.commons" module="commons-daemon"/> 

 </dependencies>
  
</ivy-module>
