<!-- 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="2.0" xmlns:m="http://ant.apache.org/ivy/maven">
    <info organisation="org.apache.hcatalog" module="${ant.project.name}"
          revision="${hcatalog.version}">
        <license name="Apache 2.0"/>
        <ivyauthor name="Apache HCatalog Team" url="http://incubator.apache.org/hcatalog"/>
        <description>
            Apache HCatalog
        </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"/>
        <conf name="releaseaudit" visibility="private"/>
    </configurations>
    <dependencies>
        <dependency org="org.apache.hbase" name="hbase" rev="${hbase.version}"
                    conf="common->master">
            <artifact name="hbase" type="jar" ext="jar"/>
            <artifact name="hbase" type="test-jar" ext="jar" m:classifier="tests"/>
        </dependency>
        <dependency org="org.apache.zookeeper" name="zookeeper" rev="${zookeeper.version}"
                    conf="common->master">
            <artifact name="zookeeper" type="jar" ext="jar"/>
            <artifact name="zookeeper" type="test-jar" ext="jar" m:classifier="tests"/>
        </dependency>

        <dependency org="org.apache.hadoop" name="hadoop-core"
          rev="${hadoop-core.version}" conf="common->master" />
        <dependency org="org.apache.hadoop" name="hadoop-test"
          rev="${hadoop-test.version}" conf="common->master" />
        <dependency org="org.apache.hive" name="hive-metastore"
          rev="${hive.version}" conf="common->master"/>
        <dependency org="org.apache.hive" name="hive-common"
          rev="${hive.version}" conf="common->master"/>
        <dependency org="org.apache.hive" name="hive-cli"
          rev="${hive.version}" conf="common->master"/>
        <dependency org="org.apache.hive" name="hive-exec"
          rev="${hive.version}" conf="common->master"/>
        <dependency org="junit" name="junit" rev="${junit.version}"
          conf="common->master"/>
        <dependency org="commons-lang" name="commons-lang" rev="${commons-lang.version}"
          conf="common->master"/>
        <dependency org="commons-logging" name="commons-logging"
          rev="${commons-logging.version}" conf="common->master"/>
        <dependency org="commons-logging" name="commons-logging-api"
          rev="${commons-logging.version}" conf="common->master"/>

        <!-- hbase test dependencies -->
        <dependency org="com.github.stephenc.high-scale-lib" name="high-scale-lib" rev="${high-scale-lib.version}" conf="common->master" />
        <dependency org="com.google.guava" name="guava" rev="${guava.version}" conf="common->master" />
        <dependency org="org.mortbay.jetty" name="jetty" rev="${jetty.version}" conf="common->master" />

        <!-- needed to run tests -->
        <dependency org="commons-configuration" name="commons-configuration"
          rev="${commons-configuration.version}" conf="default"/>
        <dependency org="org.codehaus.jackson" name="jackson-mapper-asl"
          rev="${jackson.version}" conf="common->master"/>
        <dependency org="org.codehaus.jackson" name="jackson-core-asl"
          rev="${jackson.version}" conf="common->master"/>
        <dependency org="org.slf4j" name="slf4j-api" rev="${slf4j.version}"
          conf="common->master"/>
        <dependency org="org.slf4j" name="slf4j-log4j12" rev="${slf4j.version}"
          conf="common->master"/>
        <dependency org="log4j" name="log4j" rev="${log4j.version}"
          conf="common->master"/>
        <dependency org="javax.jdo" name="jdo2-api" rev="${jdo.version}"
          conf="default"/>
        <dependency org="org.datanucleus" name="datanucleus-core"
          rev="${datanucleus-core.version}" conf="default"/>
        <dependency org="org.datanucleus" name="datanucleus-connectionpool"
          rev="${datanucleus-connectionpool.version}" conf="default"/>
        <dependency org="org.datanucleus" name="datanucleus-enhancer"
          rev="${datanucleus-enhancer.version}" conf="default"/>
        <dependency org="org.datanucleus" name="datanucleus-rdbms"
          rev="${datanucleus-rdbms.version}" conf="default"/>
        <dependency org="commons-dbcp" name="commons-dbcp" rev="${commons-dbcp.version}"
            conf="common->master">
          <exclude module="commons-pool" />
          <exclude org="org.apache.geronimo.specs" module="geronimo-jta_1.1_spec"/>
        </dependency>
        <dependency org="commons-pool" name="commons-pool" rev="${commons-pool.version}"
          conf="default"/>
        <dependency org="org.apache.derby" name="derby" rev="${derby.version}"
          conf="default"/>
        <dependency org="commons-configuration" name="commons-configuration"
          rev="${commons-configuration.version}" conf="default"/>
        <dependency org="commons-httpclient" name="commons-httpclient"
          rev="${commons-httpclient.version}" conf="default"/>
        <dependency org="org.apache.hive" name="hive-builtins"
          rev="${hive.version}" conf="common->master"/>
        <dependency org="org.mortbay.jetty" name="jetty"
          rev="${jetty.version}" conf="default"/>
        <dependency org="org.mortbay.jetty" name="jetty-util"
          rev="${jetty.version}" conf="default"/>
        <dependency org="org.apache.thrift" name="libfb303" rev="${fb303.version}"
          conf="common->master"/>
        <dependency org="org.antlr" name="antlr-runtime" rev="${antlr.version}"
          conf="common->master" />
        <dependency org="org.apache.hive" name="hive-hbase-handler"
          rev="${hive.version}" conf="common->master"/>

 
    </dependencies>
</ivy-module>
