<!--
   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}" revision="${version}">
    <license name="Apache 2.0"/>
    <ivyauthor name="Apache Hadoop Team" url="http://hadoop.apache.org"/>
    <description>
        Hadoop Common
    </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"
      extends="client,server,s3-server,kfs,mandatory,jetty,ftp"/>

    <conf name="mandatory" description="contains the critical  dependencies"
      extends="commons-logging,log4j"/>

    <!--
    These public configurations contain the core dependencies for running hadoop client or server.
    The server is effectively a superset of the client.
    -->
    <conf name="client" description="client-side dependencies"
      extends="mandatory,httpclient"/>
    <conf name="server" description="server-side dependencies"
      extends="client"/>
    <conf name="s3-client" description="dependencies for working with S3/EC2 infrastructure"
      extends="client"/>
    <conf name="s3-server" description="dependencies for running on S3/EC2 infrastructure"
      extends="s3-client,server"/>
    <conf name="kfs" description="dependencies for KFS file system support"/>
    <conf name="ftp" description="dependencies for workign with FTP filesytems" 
              extends="mandatory"/>
   <conf name="jetty" description="Jetty provides the in-VM HTTP daemon" extends="commons-logging"/>

   <conf name="common" extends="runtime,mandatory,httpclient,ftp,jetty,jdiff"
		      description="common artifacts"/>
    <!--Testing pulls in everything-->
   <conf name="test" extends="master" description="the classpath needed to run tests"/>

    <!--Packaging pulls in everything-->
   <conf name="package" extends="master" description="the classpath needed for packaging"/>

    <!--Private configurations. -->

    <conf name="javadoc" visibility="private" description="artiracts required while performing doc generation"
      extends="common,mandatory,jetty,lucene"/>

    <conf name="releaseaudit" visibility="private"
	description="Artifacts required for releaseaudit target"/>
     
    <conf name="commons-logging" visibility="private"/>
    <conf name="httpclient" visibility="private" extends="commons-logging"/>
    <conf name="log4j" visibility="private"/>
    <conf name="lucene" visibility="private"/>
    <conf name="jdiff" visibility="private" extends="log4j,s3-client,jetty,server"/>
    <conf name="checkstyle" visibility="private"/>

  </configurations>

  <publications>
    <!--get the artifact from our module name-->
    <artifact conf="master"/>
  </publications>
  <dependencies>

 <!--used client side-->
    <dependency org="commons-cli"
      name="commons-cli"
      rev="${commons-cli.version}"
      conf="client->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="xmlenc"
      name="xmlenc"
      rev="${xmlenc.version}"
      conf="server->default"/>

    <!--Configuration: httpclient-->

    <!--
    commons-httpclient asks for too many files.
    All it needs is commons-codec and commons-logging JARs
    -->
    <dependency org="commons-httpclient"
      name="commons-httpclient"
      rev="${commons-httpclient.version}"
      conf="httpclient->master">
    </dependency>

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

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

    <!--Configuration: Jetty -->

<!-- <dependency org="javax.servlet"
      name="servlet-api"
      rev="${servlet-api.version}"
      conf="jetty->master"/>   -->
    <dependency org="org.mortbay.jetty"
      name="jetty"
      rev="${jetty.version}"
      conf="jetty->master"/>
    <dependency org="org.mortbay.jetty"
      name="jetty-util"
      rev="${jetty-util.version}"
      conf="jetty->master"/>

    <dependency org="tomcat"
      name="jasper-runtime"
      rev="${jasper.version}"
      conf="jetty->master"/>
    <dependency org="tomcat"
      name="jasper-compiler"
      rev="${jasper.version}"
      conf="jetty->master"/>
    <dependency org="org.mortbay.jetty"
      name="jsp-api-2.1"
      rev="${jetty.version}"
      conf="jetty->master"/>
    <dependency org="org.mortbay.jetty"
      name="jsp-2.1"
      rev="${jetty.version}"
      conf="jetty->master"/>
    <dependency org="commons-el"
      name="commons-el"
      rev="${commons-el.version}"
      conf="jetty->master"/>


    <!--Configuration: commons-logging -->

    <!--it is essential that only the master JAR of commons logging
    is pulled in, as its dependencies are usually a mess, including things
    like out of date servlet APIs, bits of Avalon, etc.
    -->
    <dependency org="commons-logging"
      name="commons-logging"
      rev="${commons-logging.version}"
      conf="commons-logging->master"/>


    <!--Configuration: commons-logging -->

    <!--log4J is not optional until commons-logging.properties is stripped out of the JAR -->
    <dependency org="log4j"
      name="log4j"
      rev="${log4j.version}"
      conf="log4j->master"/>

    <!--Configuration: s3-client -->
    <!--there are two jets3t projects in the repository; this one goes up to 0.6 and
    is assumed to be the live one-->
    <dependency org="net.java.dev.jets3t"
      name="jets3t"
      rev="${jets3t.version}"
      conf="s3-client->master"/>
    <dependency org="commons-net"
      name="commons-net"
      rev="${commons-net.version}"
      conf="s3-client->master"/> 
    <dependency org="org.mortbay.jetty"
      name="servlet-api-2.5"
      rev="${servlet-api-2.5.version}"
      conf="s3-client->master"/>
    <dependency org="net.sf.kosmosfs"
      name="kfs"
      rev="${kfs.version}"
      conf="kfs->default"/>

    <!--Configuration: test -->
    <!--artifacts needed for testing -->

    <dependency org="org.apache.ftpserver"
      name="ftplet-api"
      rev="${ftplet-api.version}"
      conf="test->default"/>
    <dependency org="org.apache.mina"
      name="mina-core"
      rev="${mina-core.version}"
      conf="test->default"/>
    <dependency org="org.apache.ftpserver"
      name="ftpserver-core"
      rev="${ftpserver-core.version}"
      conf="test->default"/>
    <dependency org="org.apache.ftpserver"
      name="ftpserver-deprecated"
      rev="${ftpserver-deprecated.version}"
      conf="test->default"/>

    <dependency org="junit"
      name="junit"
      rev="${junit.version}"
      conf="test->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="hsqldb"
      name="hsqldb"
      rev="${hsqldb.version}"
      conf="common->default"/>
    <dependency org="org.apache.lucene"
      name="lucene-core"
      rev="${lucene-core.version}"
      conf="javadoc->default"/> 
    <dependency org="commons-logging"
      name="commons-logging-api"
      rev="${commons-logging-api.version}"
      conf="common->default"/>
    <dependency org="org.slf4j"
      name="slf4j-api"
      rev="${slf4j-api.version}"
      conf="common->default"/>
    <dependency org="org.eclipse.jdt"
      name="core"
      rev="${core.version}"
      conf="common->master"/>
    <dependency org="oro"
      name="oro"
      rev="${oro.version}"
      conf="common->default"/>
    <dependency org="org.slf4j"
      name="slf4j-log4j12"
      rev="${slf4j-log4j12.version}"
      conf="common->master">
    </dependency>
    <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="com.thoughtworks.paranamer"
      name="paranamer"
      rev="${paranamer.version}"
      conf="common->default"/>
    <dependency org="com.thoughtworks.paranamer"
      name="paranamer-ant"
      rev="${paranamer.version}"
      conf="common->default"/>
    <dependency org="org.aspectj"
      name="aspectjrt"
      rev="${aspectj.version}"
      conf="common->default">
    </dependency>
    <dependency org="org.aspectj"
      name="aspectjtools"
      rev="${aspectj.version}"
      conf="common->default">
    </dependency>
    <dependency org="org.mockito" 
      name="mockito-all" 
      rev="${mockito-all.version}" 
      conf="test->default">
    </dependency> 
    <dependency org="com.jcraft"
      name="jsch"
      rev="${jsch.version}"
      conf="common->default">
    </dependency>
    <!--Configuration: package -->
    <!--artifacts needed for packaging -->
    <dependency org="org.vafer" 
      name="jdeb" 
      rev="${jdeb.version}"
      conf="package->master">
    </dependency>
    <dependency org="commons-configuration"
      name="commons-configuration"
      rev="${commons-configuration.version}"
      conf="common->default"/>
    <dependency org="org.apache.commons"
      name="commons-math"
      rev="${commons-math.version}"
      conf="common->default"/>
    <dependency org="com.google.guava"
      name="guava"
      rev="${guava.version}"
      conf="common->default"/>
    <dependency org="com.google.protobuf"
      name="protobuf-java"
      rev="${protobuf.version}"
      conf="common->default"/>
  </dependencies>
</ivy-module>
