<!-- 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.hadoop" name="hadoop-core"
          rev="${hadoop20.version}" conf="common->master" />
        <dependency org="org.apache.hadoop" name="hadoop-test"
          rev="${hadoop20.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"/>

        <!-- needed to run tests -->
        <dependency org="commons-configuration" name="commons-configuration"
          rev="${commons-configuration.version}" conf="default"/>
	<dependency org="commons-cli" name="commons-cli" rev="${commons-cli.version}" />
        <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.apache.thrift" name="libfb303" rev="${fb303.version}"
          conf="common->master"/>
        <dependency org="org.antlr" name="antlr-runtime" rev="${antlr.version}"
          conf="common->master" />
    </dependencies>
</ivy-module>
