<?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.sqoop" module="${name}">
    <license name="Apache 2.0"/>
    <ivyauthor name="Sqoop Team" url="http://sqoop.apache.org/" />
    <description>
        Sqoop
    </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="org.apache.hadoop" name="hadoop-core"
      rev="${hadoop.version}" conf="common->default"/>
    <dependency org="hsqldb" name="hsqldb" rev="${hsqldb.version}"
      conf="common->default"/>
    <dependency org="commons-io" name="commons-io" rev="${commons-io.version}"
      conf="common->default"/>
    <dependency org="commons-cli" name="commons-cli"
      rev="${commons-cli.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" />
  </dependencies>
</ivy-module>
