<!-- 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">
    <conf name="default"/>
    <conf name="test" extends="default"/>
  </configurations>

  <publications>
    <artifact name="hcatalog"/>
    <artifact name="hcatalog-core"/>
    <artifact name="hcatalog-server-extensions"/>
  </publications>

  <dependencies>
    <!-- hadoop20 dependencies -->
    <dependency org="org.apache.pig" name="pig" rev="${pig.version}" conf="default->*"/>
    <dependency org="org.apache.hadoop" name="hadoop-tools" rev="${hadoop20.version}" conf="default->*"/>
    <dependency org="javax.management.j2ee" name="management-api" rev="${javax-mgmt.version}"/>
    <dependency org="org.codehaus.jackson" name="jackson-mapper-asl" rev="${jackson.version}"/>
    <dependency org="org.codehaus.jackson" name="jackson-core-asl" rev="${jackson.version}"/>
    <dependency org="org.apache.hive" name="hive-builtins" rev="${hive.version}"/>
    <dependency org="org.apache.hive" name="hive-metastore" rev="${hive.version}"/>
    <dependency org="org.apache.hive" name="hive-common" rev="${hive.version}"/>
    <dependency org="org.apache.hive" name="hive-exec" rev="${hive.version}"/>
    <dependency org="org.apache.hive" name="hive-cli" rev="${hive.version}"/>
    <dependency org="org.apache.hive" name="hive-hbase-handler" rev="${hive.version}">
      <exclude org="org.apache.maven.plugins"/>
      <exclude org="org.jruby"/>
    </dependency>
    <dependency org="org.apache.thrift" name="libfb303" rev="${fb303.version}"/>
    <dependency org="commons-dbcp" name="commons-dbcp" rev="${commons-dbcp.version}">
      <exclude module="commons-pool"/>
      <exclude org="org.apache.geronimo.specs" module="geronimo-jta_1.1_spec"/>
    </dependency>
    <dependency org="com.google.guava" name="guava" rev="${guava.version}"/>

    <!-- test dependencies -->
    <dependency org="junit" name="junit" rev="${junit.version}" conf="test->default"/>
    <dependency org="org.vafer" name="jdeb" rev="${jdeb.version}" conf="test->default"/>
    <dependency org="com.google.code.p.arat" name="rat-lib" rev="${rats-lib.version}" conf="test->default"/>
    <dependency org="org.apache.maven" name="maven-ant-tasks" rev="${maven-ant-tasks.version}" conf="test->*"/>
    <dependency org="org.apache.hadoop" name="hadoop-test" rev="${hadoop20.version}" conf="test->default"/>
    <dependency org="com.puppycrawl.tools" name="checkstyle" rev="${checkstyle.version}" conf="test->default">
      <exclude org="com.google.collections"/>
    </dependency>
  </dependencies>
</ivy-module>
