<?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"/>
  </configurations>

  <publications>
    <!--get the artifact from our module name-->
    <artifact conf="master"/>
  </publications>
  <dependencies>
    <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->default"/>
    <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="${jsp-api-2.1.version}"
      conf="common->master"/>
    <dependency org="org.mortbay.jetty"
      name="jsp-2.1"
      rev="${jsp-2.1.version}"
      conf="common->master"/>
    <dependency org="commons-cli"
      name="commons-cli"
      rev="${commons-cli.version}"
      conf="common->default"/>
    <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="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"/>
  </dependencies>
</ivy-module>
