<?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="2.0" xmlns:m="http://ant.apache.org/ivy/maven"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
  <info organisation="org.apache.pig" module="${name}" revision="${version}">
    <license name="Apache 2.0"/>
    <ivyauthor name="Apache Hadoop Team" url="http://hadoop.apache.org/pig"/>
    <description>Pig</description>
  </info>
  <configurations defaultconfmapping="default">
    <!--these match the Maven configurations-->
    <conf name="master" description="contains the artifact but no dependencies"/>
    <conf name="default" extends="master,runtime"/>
    <conf name="runtime" extends="compile,test" description="runtime but not the artifact" />
    <!--Private configurations. -->
    <conf name="compile" extends="hadoop${hadoopversion},hbase${hbaseversion},hive${hiveversion}" visibility="private" description="compile artifacts"/>
    <conf name="test" extends="compile" visibility="private"/>
    <conf name="javadoc" visibility="private" extends="compile,test"/>
    <conf name="releaseaudit" visibility="private"/>
    <conf name="jdiff" visibility="private"/>
    <conf name="checkstyle" visibility="private"/>
    <conf name="buildJar" extends="compile,test" visibility="private"/>
    <conf name="hadoop2" visibility="private"/>
    <conf name="hadoop3" visibility="private"/>
    <conf name="hbase1" visibility="private"/>
    <conf name="hbase2" visibility="private"/>
    <conf name="spark2" visibility="private" />
    <conf name="spark3" visibility="private" />
    <conf name="hive1" visibility="private"/>
    <conf name="hive3" visibility="private"/>
    <conf name="owasp" visibility="private" description="Artifacts required for owasp target"/>
  </configurations>
  <publications>
    <artifact name="pig" conf="master"/>
    <artifact name="pig" m:classifier="withouthadoop" conf="master"/>
    <artifact name="pig" m:classifier="withdependencies" conf="master"/>
    <artifact name="pig" m:classifier="sources" conf="master"/>
    <artifact name="pig" m:classifier="javadoc" conf="master"/>
    <artifact name="pig" m:classifier="h2" conf="master"/>
    <artifact name="pig" m:classifier="withouthadoop-h2" conf="master"/>
  </publications>
  <dependencies>
    <dependency org="checkstyle" name="checkstyle" rev="${checkstyle.version}"
      conf="checkstyle->master"/>
    <dependency org="commons-beanutils" name="commons-beanutils-core" rev="${commons-beanutils.version}"
      conf="checkstyle->master"/>
    <dependency org="com.sun.jersey" name="jersey-bundle" rev="${jersey.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="com.sun.jersey" name="jersey-server" rev="${jersey.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="com.sun.jersey.contribs" name="jersey-guice" rev="${jersey.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="commons-codec" name="commons-codec" rev="${commons-codec.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="commons-el" name="commons-el" rev="${commons-el.version}"
      conf="compile->master"/>
    <dependency org="commons-io" name="commons-io" rev="${commons-io.version}"
      conf="compile->master"/>
    <dependency org="org.apache.httpcomponents" name="httpclient" rev="${httpcomponents.version}"
      conf="compile->master"/>
    <dependency org="org.apache.httpcomponents" name="httpcore" rev="${httpcomponents.version}"
      conf="compile->master"/>
    <dependency org="nl.basjes.parse.httpdlog" name="httpdlog-pigloader" rev="${basjes-httpdlog-pigloader.version}"
      conf="compile->master">
      <artifact name="httpdlog-pigloader" m:classifier="udf"/>
    </dependency>
    <dependency org="commons-configuration" name="commons-configuration" rev="${commons-configuration.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="commons-collections" name="commons-collections" rev="${commons-collections.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="javax.servlet" name="servlet-api" rev="${servlet-api.version}" conf="hadoop2->master"/>
    <dependency org="javax.servlet" name="javax.servlet-api" rev="${servlet-api.version}" conf="hadoop3->master"/>
    <dependency org="javax.ws.rs" name="jsr311-api" rev="${jsr311-api.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="com.google.protobuf" name="protobuf-java" rev="${protobuf-java.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="javax.inject" name="javax.inject" rev="${javax-inject.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="javax.xml.bind" name="jaxb-api" rev="${jaxb-api.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="com.sun.xml.bind" name="jaxb-impl" rev="${jaxb-impl.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="com.google.inject" name="guice" rev="${guice.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="com.google.inject.extensions" name="guice-servlet" rev="${guice-servlet.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="aopalliance" name="aopalliance" rev="${aopalliance.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.glassfish" name="javax.el" rev="${glassfish.el.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="com.google.re2j" name="re2j" rev="${re2j.version}"
      conf="hadoop3->master" />
    <dependency org="com.codahale.metrics" name="metrics-core" rev="${metrics-core.version}"
      conf="hadoop2->master"/>
    <dependency org="io.dropwizard.metrics" name="metrics-core" rev="${metrics-core.version}"
      conf="hadoop3->master"/>

    <!-- Hadoop 2 dependencies -->
    <dependency org="com.fasterxml.woodstox" name="woodstox-core" rev="${woodstox.version}" conf="hadoop2->master"/>
    <dependency org="org.codehaus.woodstox" name="stax2-api" rev="${stax2-api.version}" conf="hadoop2->master"/>
    <dependency org="org.mortbay.jetty" name="jetty-sslengine" rev="6.1.26" conf="hadoop2->master"/>

    <!-- Hadoop 2/3 dependencies -->
    <dependency org="org.apache.hadoop" name="hadoop-annotations"
      rev="${hadoop-common.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-auth"
      rev="${hadoop-common.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-common"
      rev="${hadoop-common.version}" conf="hadoop2->master;hadoop3->default">
      <artifact name="hadoop-common" ext="jar" />
      <artifact name="hadoop-common" type="tests" ext="jar" m:classifier="tests" />
    </dependency>
    <dependency org="org.apache.hadoop" name="hadoop-hdfs"
      rev="${hadoop-hdfs.version}" conf="hadoop2->master;hadoop3->default">
      <artifact name="hadoop-hdfs" ext="jar" />
      <artifact name="hadoop-hdfs" type="tests" ext="jar" m:classifier="tests" />
    </dependency>
    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-core" rev="${hadoop-mapreduce.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-jobclient" rev="${hadoop-mapreduce.version}"
      conf="hadoop2->master;hadoop3->master">
      <artifact name="hadoop-mapreduce-client-jobclient" ext="jar" />
      <artifact name="hadoop-mapreduce-client-jobclient" type="tests" ext="jar" m:classifier="tests"/>
      <exclude org="commons-daemon" module="commons-daemon"/><!--bad POM-->
      <exclude org="org.apache.commons" module="commons-daemon"/><!--bad POM-->
    </dependency>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-tests" rev="${hadoop-mapreduce.version}"
      conf="hadoop2->master;hadoop3->master">
      <artifact name="hadoop-yarn-server-tests" type="jar" m:classifier="tests"/>
    </dependency>
    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-app" rev="${hadoop-mapreduce.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-shuffle" rev="${hadoop-mapreduce.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-common"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-api"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-common"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-server"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-web-proxy"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-common"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-nodemanager"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->default">
    </dependency>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-resourcemanager" 
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-client"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-applicationhistoryservice"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-hs"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.hadoop" name="hadoop-hdfs-client"
      rev="${hadoop-hdfs.version}" conf="hadoop2->master;hadoop3->master">
      <artifact name="hadoop-hdfs-client" ext="jar" />
      <artifact name="hadoop-hdfs-client" type="tests" ext="jar" m:classifier="tests" />
    </dependency>
    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-timelineservice"
      rev="${hadoop-mapreduce.version}" conf="hadoop2->master;hadoop3->master"/>

    <dependency org="commons-logging" name="commons-logging" rev="${commons-logging.version}"
      conf="compile->master;checkstyle->master"/>
    <dependency org="org.slf4j" name="slf4j-reload4j" rev="${slf4j-reload4j.version}"
      conf="compile->master;test->master"/>
    <dependency org="ch.qos.reload4j" name="reload4j" rev="${reload4j.version}"
      conf="compile->master;test->master"/>
    <dependency org="commons-cli" name="commons-cli" rev="${commons-cli.version}"
      conf="compile->master;checkstyle->master"/>
    <dependency org="org.apache.avro" name="avro" rev="${avro.version}"
      conf="compile->default;checkstyle->master">
      <exclude org="org.codehaus.jackson" module="jackson-core-asl"/>
      <exclude org="org.codehaus.jackson" module="jackson-mapper-asl"/>
    </dependency>
    <dependency org="org.apache.avro" name="avro-mapred" rev="${avro.version}"
      conf="hadoop2->default;checkstyle->master;hadoop3->master">
      <artifact name="avro-mapred" type="jar" m:classifier="hadoop2"/>
      <exclude org="org.codehaus.jackson" module="jackson-core-asl"/>
      <exclude org="org.codehaus.jackson" module="jackson-mapper-asl"/>
      <exclude org="io.netty" module="netty"/>
    </dependency>
    <dependency org="org.apache.avro" name="trevni-core" rev="${avro.version}"
      conf="compile->default;checkstyle->master">
      <artifact name="trevni-core" ext="jar" />
      <artifact name="trevni-core" type="test-jar" ext="jar" m:classifier="tests"/>
    </dependency>
    <dependency org="org.apache.avro" name="trevni-avro" rev="${avro.version}"
      conf="compile->default;checkstyle->master">
      <artifact name="trevni-avro" ext="jar" />
      <artifact name="trevni-avro" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.apache.hadoop" module="hadoop-core"/>
    </dependency>
    <dependency org="org.apache.avro" name="avro-tools" rev="${avro.version}"
      conf="test->default">
      <artifact name="avro-tools" m:classifier="nodeps" type="jar"/>
    </dependency>
    <dependency org="net.sf.jopt-simple" name="jopt-simple" rev="${jopt.version}"
      conf="test->default" />
    <dependency org="org.xerial.snappy" name="snappy-java" rev="${snappy-java.version}"
      conf="compile->default;checkstyle->master"/>
    <dependency org="com.googlecode.json-simple" name="json-simple" rev="${json-simple.version}"
      conf="compile->master;checkstyle->master"/>
    <dependency org="jdiff" name="jdiff" rev="${jdiff.version}"
      conf="jdiff->default"/>
    <dependency org="xalan" name="xalan" rev="${xalan.version}"
      conf="test->default"/>
    <dependency org="xerces" name="xercesImpl" rev="${xerces.version}"
      conf="jdiff->default;test->default"/>
    <dependency org="jline" name="jline" rev="${jline.version}"
      conf="compile->master"/>
    <dependency org="net.java.dev.javacc" name="javacc" rev="${javacc.version}"
      conf="compile->master"/>
    <dependency org="junit" name="junit" rev="${junit.version}"
      conf="test->master"/>
    <dependency org="com.google.code.p.arat" name="rat-lib" rev="${rats-lib.version}"
      conf="releaseaudit->default"/>
    <dependency org="org.codehaus.groovy" name="groovy-all" rev="${groovy.version}"
      conf="compile->master"/>
    <dependency org="org.apache.ivy" name="ivy" rev="${ivy.version}"
      conf="compile->master"/>
    <dependency org="org.codehaus.jackson" name="jackson-mapper-asl" rev="${jackson.version}"
      conf="compile->master">
      <exclude org="com.thoughtworks.paranamer" module="paranamer"/>
    </dependency>
    <dependency org="org.codehaus.jackson" name="jackson-core-asl" rev="${jackson.version}"
      conf="compile->master">
      <exclude org="com.thoughtworks.paranamer" module="paranamer"/>
    </dependency>
    <dependency org="org.codehaus.jackson" name="jackson-xc" rev="${jackson.version}" conf="hadoop3->master">
      <exclude org="com.thoughtworks.paranamer" module="paranamer"/>
    </dependency>
    <dependency org="com.thoughtworks.paranamer" name="paranamer" rev="${paranamer.version}" conf="compile->master"/>
    <dependency org="org.fusesource.jansi" name="jansi" rev="${jansi.version}"
      conf="compile->master"/>
    <dependency org="joda-time" name="joda-time" rev="${joda-time.version}" conf="compile->master"/>
    <dependency org="com.google.guava" name="guava" rev="${guava.version}" conf="compile->master" />
    <dependency org="org.python" name="jython-standalone" rev="${jython.version}" conf="compile->master"/>
    <dependency org="rhino" name="js" rev="${rhino.version}" conf="compile->master"/>
    <dependency org="org.antlr" name="antlr" rev="${antlr.version}" conf="compile->master"/>
    <dependency org="org.antlr" name="antlr-runtime" rev="${antlr.version}" conf="compile->default"/>
    <dependency org="org.antlr" name="ST4" rev="${stringtemplate.version}" conf="compile->default"/>
    <dependency org="org.apache.zookeeper" name="zookeeper" rev="${zookeeper.version}" conf="compile->master"/>
    <dependency org="org.apache.zookeeper" name="zookeeper-jute" rev="${zookeeper.version}" conf="compile->master"/>
    <dependency org="io.netty" name="netty" rev="${netty.version}" conf="test->master"/>
    <dependency org="io.netty" name="netty-all" rev="${netty-all.version}" conf="test->master" />
    <dependency org="dk.brics.automaton" name="automaton" rev="1.11-8" conf="compile->default"/>

    <dependency org="org.jruby" name="jruby-complete" rev="${jruby.version}" conf="compile->master"/>
    <dependency org="asm" name="asm" rev="${asm.version}" conf="compile->default"/>

    <!-- Dependencies for bloom join -->
    <dependency org="org.roaringbitmap" name="RoaringBitmap" rev="${roaring-bitmap-shaded.version}" conf="compile->master"/>

    <!-- HBase dependency in format for releases higher or equal to 0.95 -->
    <dependency org="org.apache.hbase" name="hbase-client" rev="${hbase1.version}" conf="hbase1->master">
      <artifact name="hbase-client" type="jar"/>
      <artifact name="hbase-client" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.slf4j" module="slf4j-api"/>
      <exclude org="org.slf4j" module="slf4j-log4j12" />
      <exclude org="stax" module="stax-api" />
      <exclude org="javax.xml.bind" module="jaxb-api" />
      <exclude org="tomcat" module="jasper-runtime"/>
      <exclude org="tomcat" module="jasper-compiler"/>
      <exclude org="com.google.protobuf" module="protobuf-java"/>
      <exclude org="com.sun.jersey" module="jersey-core"/>
      <exclude org="com.sun.jersey" module="jersey-server"/>
      <exclude org="com.sun.jersey" module="jersey-json"/>
      <exclude org="asm" module="asm"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-common" rev="${hbase1.version}" conf="hbase1->master">
      <artifact name="hbase-common" type="jar"/>
      <artifact name="hbase-common" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.apache.hadoop" module="hadoop-core"/>
      <exclude org="stax" module="stax-api" />
      <exclude org="javax.xml.bind" module="jaxb-api" />
      <exclude org="javax.ws.rs" module="jsr311-api" />
      <exclude org="tomcat" module="jasper-runtime"/>
      <exclude org="tomcat" module="jasper-compiler"/>
      <exclude org="com.sun.jersey" module="jersey-core"/>
      <exclude org="com.sun.jersey" module="jersey-server"/>
      <exclude org="com.sun.jersey" module="jersey-json"/>
      <exclude org="asm" module="asm"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-server" rev="${hbase1.version}" conf="hbase1->master">
      <artifact name="hbase-server" type="jar"/>
      <artifact name="hbase-server" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.apache.hadoop" module="hadoop-core"/>
      <exclude org="org.slf4j" module="slf4j-api"/>
      <exclude org="org.slf4j" module="slf4j-log4j12" />
      <exclude org="stax" module="stax-api" />
      <exclude org="javax.xml.bind" module="jaxb-api" />
      <exclude org="javax.ws.rs" module="jsr311-api" />
      <exclude org="tomcat" module="jasper-runtime"/>
      <exclude org="tomcat" module="jasper-compiler"/>
      <exclude org="com.sun.jersey" module="jersey-core"/>
      <exclude org="com.sun.jersey" module="jersey-server"/>
      <exclude org="com.sun.jersey" module="jersey-json"/>
      <exclude org="asm" module="asm"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-protocol" rev="${hbase1.version}" conf="hbase1->master">
      <artifact name="hbase-protocol" type="jar"/>
      <artifact name="hbase-protocol" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="com.google.protobuf" module="protobuf-java"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-hadoop-compat" rev="${hbase1.version}" conf="hbase1->master">
      <artifact name="hbase-hadoop-compat" type="jar"/>
      <artifact name="hbase-hadoop-compat" type="test-jar" ext="jar" m:classifier="tests"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-hadoop2-compat" rev="${hbase1.version}" conf="hbase1->master">
      <artifact name="hbase-hadoop2-compat" type="jar"/>
      <artifact name="hbase-hadoop2-compat" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.apache.hadoop" module="hadoop-core"/>
      <exclude org="org.slf4j" module="slf4j-api"/>
      <exclude org="stax" module="stax-api" />
      <exclude org="javax.xml.bind" module="jaxb-api" />
      <exclude org="tomcat" module="jasper-runtime"/>
      <exclude org="tomcat" module="jasper-compiler"/>
      <exclude org="com.sun.jersey" module="jersey-core"/>
      <exclude org="com.sun.jersey" module="jersey-server"/>
      <exclude org="com.sun.jersey" module="jersey-json"/>
      <exclude org="asm" module="asm"/>
    </dependency>
    <dependency org="com.lmax" name="disruptor" rev="3.3.0" conf="hbase1->master"/>

    <!-- HBase 2.x dependencies -->
    <dependency org="org.apache.hbase" name="hbase-client" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-client" type="jar"/>
      <artifact name="hbase-client" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.slf4j" module="slf4j-api"/>
      <exclude org="org.slf4j" module="slf4j-log4j12" />
      <exclude org="stax" module="stax-api" />
      <exclude org="javax.xml.bind" module="jaxb-api" />
      <exclude org="tomcat" module="jasper-runtime"/>
      <exclude org="tomcat" module="jasper-compiler"/>
      <exclude org="com.google.protobuf" module="protobuf-java"/>
      <exclude org="com.sun.jersey" module="jersey-core"/>
      <exclude org="com.sun.jersey" module="jersey-server"/>
      <exclude org="com.sun.jersey" module="jersey-json"/>
      <exclude org="asm" module="asm"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-common" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-common" type="jar"/>
      <artifact name="hbase-common" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.apache.hadoop" module="hadoop-core"/>
      <exclude org="stax" module="stax-api" />
      <exclude org="javax.xml.bind" module="jaxb-api" />
      <exclude org="javax.ws.rs" module="jsr311-api" />
      <exclude org="tomcat" module="jasper-runtime"/>
      <exclude org="tomcat" module="jasper-compiler"/>
      <exclude org="com.sun.jersey" module="jersey-core"/>
      <exclude org="com.sun.jersey" module="jersey-server"/>
      <exclude org="com.sun.jersey" module="jersey-json"/>
      <exclude org="asm" module="asm"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-server" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-server" type="jar"/>
      <artifact name="hbase-server" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.apache.hadoop" module="hadoop-core"/>
      <exclude org="org.slf4j" module="slf4j-api"/>
      <exclude org="org.slf4j" module="slf4j-log4j12" />
      <exclude org="stax" module="stax-api" />
      <exclude org="javax.xml.bind" module="jaxb-api" />
      <exclude org="javax.ws.rs" module="jsr311-api" />
      <exclude org="tomcat" module="jasper-runtime"/>
      <exclude org="tomcat" module="jasper-compiler"/>
      <exclude org="com.sun.jersey" module="jersey-core"/>
      <exclude org="com.sun.jersey" module="jersey-server"/>
      <exclude org="com.sun.jersey" module="jersey-json"/>
      <exclude org="asm" module="asm"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-protocol" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-protocol" type="jar"/>
      <artifact name="hbase-protocol" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="com.google.protobuf" module="protobuf-java"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-hadoop-compat" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-hadoop-compat" type="jar"/>
      <artifact name="hbase-hadoop-compat" type="test-jar" ext="jar" m:classifier="tests"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-hadoop2-compat" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-hadoop2-compat" type="jar"/>
      <artifact name="hbase-hadoop2-compat" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.apache.hadoop" module="hadoop-core"/>
      <exclude org="org.slf4j" module="slf4j-api"/>
      <exclude org="stax" module="stax-api" />
      <exclude org="javax.xml.bind" module="jaxb-api" />
      <exclude org="tomcat" module="jasper-runtime"/>
      <exclude org="tomcat" module="jasper-compiler"/>
      <exclude org="com.sun.jersey" module="jersey-core"/>
      <exclude org="com.sun.jersey" module="jersey-server"/>
      <exclude org="com.sun.jersey" module="jersey-json"/>
      <exclude org="asm" module="asm"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-protocol-shaded" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-protocol-shaded" type="jar"/>
      <artifact name="hbase-protocol-shaded" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="com.google.protobuf" module="protobuf-java"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-procedure" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-procedure" type="jar"/>
      <artifact name="hbase-procedure" type="test-jar" ext="jar" m:classifier="tests"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-shaded-mapreduce" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-shaded-mapreduce" type="jar"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-logging" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-logging" type="jar"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-metrics-api" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-metrics-api" type="jar"/>
      <artifact name="hbase-metrics-api" type="test-jar" ext="jar" m:classifier="tests"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-metrics" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-metrics" type="jar"/>
      <artifact name="hbase-metrics" type="test-jar" ext="jar" m:classifier="tests"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-mapreduce" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-mapreduce" type="jar"/>
      <artifact name="hbase-mapreduce" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.apache.hadoop" module="hadoop-core"/>
      <exclude org="org.slf4j" module="slf4j-api"/>
      <exclude org="org.slf4j" module="slf4j-log4j12" />
      <exclude org="stax" module="stax-api" />
      <exclude org="javax.xml.bind" module="jaxb-api" />
      <exclude org="javax.ws.rs" module="jsr311-api" />
      <exclude org="tomcat" module="jasper-runtime"/>
      <exclude org="tomcat" module="jasper-compiler"/>
      <exclude org="com.sun.jersey" module="jersey-core"/>
      <exclude org="com.sun.jersey" module="jersey-server"/>
      <exclude org="com.sun.jersey" module="jersey-json"/>
      <exclude org="asm" module="asm"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-zookeeper" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-zookeeper" type="jar"/>
      <artifact name="hbase-zookeeper" type="test-jar" ext="jar" m:classifier="tests"/>
      <exclude org="org.apache.hadoop" module="hadoop-core"/>
      <exclude org="stax" module="stax-api" />
      <exclude org="javax.xml.bind" module="jaxb-api" />
      <exclude org="javax.ws.rs" module="jsr311-api" />
      <exclude org="tomcat" module="jasper-runtime"/>
      <exclude org="tomcat" module="jasper-compiler"/>
      <exclude org="com.sun.jersey" module="jersey-core"/>
      <exclude org="com.sun.jersey" module="jersey-server"/>
      <exclude org="com.sun.jersey" module="jersey-json"/>
      <exclude org="asm" module="asm"/>
    </dependency>

    <dependency org="org.apache.htrace" name="htrace-core4" rev="${htrace4.version}" conf="hadoop2->master;hadoop3->master;hbase2->master">
      <artifact name="htrace-core4" type="jar"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-replication" rev="${hbase2.version}" conf="hbase2->master">
        <artifact name="hbase-replication" type="jar"/>
        <artifact name="hbase-replication" type="test-jar" ext="jar" m:classifier="tests"/>
    </dependency>

    <dependency org="org.apache.hbase" name="hbase-http" rev="${hbase2.version}" conf="hbase2->master">
      <artifact name="hbase-http" type="jar"/>
      <artifact name="hbase-http" type="test-jar" ext="jar" m:classifier="tests"/>
    </dependency>

    <dependency org="org.apache.hbase.thirdparty" name="hbase-shaded-miscellaneous" rev="4.1.2" conf="hbase2->master" />

    <dependency org="org.apache.hbase.thirdparty" name="hbase-shaded-jetty" rev="4.1.2" conf="hbase2->master" />

    <dependency org="org.apache.hbase.thirdparty" name="hbase-shaded-protobuf" rev="4.1.2" conf="hbase2->master" />

    <dependency org="org.eclipse.jetty" name="jetty-http" rev="9.4.40.v20210413" conf="hbase2->master"/>
    <dependency org="org.eclipse.jetty" name="jetty-io" rev="9.4.40.v20210413" conf="hbase2->master"/>
    <dependency org="org.eclipse.jetty" name="jetty-security" rev="9.4.40.v20210413" conf="hbase2->master"/>
    <dependency org="org.eclipse.jetty" name="jetty-server" rev="9.4.40.v20210413" conf="hbase2->master"/>
    <dependency org="org.eclipse.jetty" name="jetty-servlet" rev="9.4.40.v20210413" conf="hbase2->master"/>
    <dependency org="org.eclipse.jetty" name="jetty-util" rev="9.4.40.v20210413" conf="hbase2->master"/>
    <dependency org="org.eclipse.jetty" name="jetty-util-ajax" rev="9.4.40.v20210413" conf="hbase2->master"/>
    <dependency org="org.eclipse.jetty" name="jetty-webapp" rev="9.4.40.v20210413" conf="hbase2->master"/>
    <dependency org="org.eclipse.jetty" name="jetty-xml" rev="9.4.40.v20210413" conf="hbase2->master"/>
    <dependency org="com.lmax" name="disruptor" rev="3.3.6" conf="hbase2->master"/>
    <!-- End of HBase dependencies -->

    <dependency org="org.apache.htrace" name="htrace-core" rev="${htrace.version}"
        conf="hadoop2->master;hadoop3->master;hbase1->master"/>
    <dependency org="org.fusesource.leveldbjni" name="leveldbjni-all" rev="${leveldbjni.version}"
      conf="hadoop2->master;hadoop3->master"/>

    <!-- for TestHBaseStorage -->
    <dependency org="org.apache.hbase" name="hbase-procedure" rev="${hbase1.version}" conf="test->master"/>

    <!-- Dependency for Accumulo{Input,Output}Format -->
    <dependency org="org.apache.accumulo" name="accumulo-core" rev="${accumulo.version}" conf="compile->default">
      <exclude org="com.google.guava" module="guava"/>
      <exclude org="commons-codec" module="commons-codec"/>
      <exclude org="commons-collections" module="commons-collections"/>
      <exclude org="commons-configuration" module="commons-configuration"/>
      <exclude org="commons-io" module="commons-io"/>
      <exclude org="commons-lang" module="commons-lang"/>
      <exclude org="commons-logging" module="commons-logging"/>
      <exclude org="jline" module="jline"/>
      <exclude org="log4j" module="log4j"/>
      <exclude org="org.apache.hadoop" module="hadoop-client"/>
      <exclude org="org.apache.zookeeper" module="zookeeper"/>
      <exclude org="org.slf4j" module="slf4j-api"/>
      <exclude org="org.slf4j" module="slf4j-log4j12"/>
    </dependency>

    <!-- Used for 'functional' Accumulo tests -->
    <dependency org="org.apache.accumulo" name="accumulo-minicluster" rev="${accumulo.version}" conf="hadoop2->default">
      <exclude org="com.google.guava" module="guava"/>
      <exclude org="commons-codec" module="commons-codec"/>
      <exclude org="commons-collections" module="commons-collections"/>
      <exclude org="commons-configuration" module="commons-configuration"/>
      <exclude org="commons-io" module="commons-io"/>
      <exclude org="commons-lang" module="commons-lang"/>
      <exclude org="commons-logging" module="commons-logging"/>
      <exclude org="jline" module="jline"/>
      <exclude org="log4j" module="log4j"/>
      <exclude org="org.apache.hadoop" module="hadoop-client"/>
      <exclude org="org.apache.zookeeper" module="zookeeper"/>
      <exclude org="org.slf4j" module="slf4j-api"/>
      <exclude org="org.slf4j" module="slf4j-log4j12"/>
    </dependency>

    <dependency org="org.apache.accumulo" name="accumulo-minicluster" rev="${accumulo.version}" conf="hadoop3->master"/>
    <dependency org="org.apache.accumulo" name="accumulo-server-base" rev="${accumulo.version}" conf="hadoop3->master"/>
    <dependency org="org.apache.accumulo" name="accumulo-tserver" rev="${accumulo.version}" conf="hadoop3->master"/>
    <dependency org="org.apache.accumulo" name="accumulo-master" rev="${accumulo.version}" conf="hadoop3->master"/>
    <dependency org="org.apache.accumulo" name="accumulo-gc" rev="${accumulo.version}" conf="hadoop3->master"/>
    <dependency org="org.apache.accumulo" name="accumulo-trace" rev="${accumulo.version}" conf="hadoop3->master"/>

    <!-- for piggybank -->
    <dependency org="org.hsqldb" name="hsqldb" rev="${hsqldb.version}"
      conf="test->default" />

    <!-- Hive 1 -->
    <dependency org="org.apache.hive" name="hive-exec" rev="${hive1.version}" conf="hive1->master" changing="true">
      <artifact name="hive-exec" m:classifier="core" />
    </dependency>
    <dependency org="org.apache.hive" name="hive-serde" rev="${hive1.version}" changing="true"
      conf="hive1->master" />
    <dependency org="org.apache.hive" name="hive-common" rev="${hive1.version}" changing="true"
      conf="hive1->master" />
    <dependency org="org.apache.hive.shims" name="hive-shims-common" rev="${hive1.version}" changing="true"
      conf="hive1->master" />
    <dependency org="org.apache.hive" name="hive-contrib" rev="${hive1.version}" changing="true"
                conf="test->master" />
    <dependency org="org.apache.hive.shims" name="hive-shims-0.23" rev="${hive1.version}" changing="true"
      conf="hive1->master" />

    <!-- Hive 3 -->
    <dependency org="org.apache.hive" name="hive-exec" rev="${hive.version}" conf="hive3->master" changing="true">
      <artifact name="hive-exec" m:classifier="core" />
    </dependency>
    <dependency org="org.apache.hive" name="hive-serde" rev="${hive.version}" changing="true"
                conf="hive3->master" />
    <dependency org="org.apache.hive" name="hive-common" rev="${hive.version}" changing="true"
                conf="hive3->master" />
    <dependency org="org.apache.hive.shims" name="hive-shims-common" rev="${hive.version}" changing="true"
                conf="hive3->master" />
    <dependency org="org.apache.hive" name="hive-contrib" rev="${hive.version}" changing="true"
                conf="test->master" />
    <dependency org="org.apache.hive" name="hive-llap-common" rev="${hive.version}" changing="true"
                conf="hive3->master" />
    <dependency org="org.apache.hive.shims" name="hive-shims-0.23" rev="${hive.version}" changing="true"
                conf="hive3->master" />
    <dependency org="org.apache.hive" name="hive-classification" rev="${hive.version}" changing="true"
                conf="hive3->master" />

    <dependency org="org.apache.orc" name="orc-core" rev="${orc.version}" changing="true" conf="hive3->default" />
    <dependency org="org.apache.orc" name="orc-shims" rev="${orc.version}" changing="true" conf="hive3->default" />
    <dependency org="org.apache.hive" name="hive-storage-api" rev="${hive-storage-api.version}" changing="true" conf="hive3->master" />
    <dependency org="org.iq80.snappy" name="snappy" rev="${snappy.version}"
      conf="test->master" />
    <dependency org="com.esotericsoftware" name="kryo-shaded" rev="${kryo.version}"
      conf="hive3->default" />
    <dependency org="com.esotericsoftware.kryo" name="kryo" rev="2.22"
      conf="hive1->default" />
    <dependency org="org.apache.commons" name="commons-lang3" rev="${commons-lang3.version}"
      conf="compile->master" />

    <dependency org="org.vafer" name="jdeb" rev="${jdeb.version}"
      conf="compile->master">
    </dependency>

    <dependency org="org.mockito" name="mockito-core" rev="${mockito.version}" conf="test->default"/>
    <dependency org="org.hamcrest" name="hamcrest-all" rev="${hamcrest.version}" conf="test->default"/>
    <dependency org="org.bouncycastle" name="bcpkix-jdk18on" rev="${bouncycastle.version}" conf="test->default"/>
    <dependency org="org.bouncycastle" name="bcprov-jdk18on" rev="${bouncycastle.version}" conf="test->default"/>
    <dependency org="org.bouncycastle" name="bcutil-jdk18on" rev="${bouncycastle.version}" conf="test->default"/>

    <dependency org="org.apache.parquet" name="parquet-pig-bundle" rev="${parquet-pig-bundle.version}" conf="compile->master"/>

    <!-- for Spark 2.x integration -->
    <dependency org="org.apache.spark" name="spark-core_${spark2-scala.version}" rev="${spark2.version}" conf="spark2->default">
      <exclude org="org.eclipse.jetty.orbit" module="javax.servlet"/>
      <exclude org="org.eclipse.jetty.orbit" module="javax.transaction"/>
      <exclude org="org.eclipse.jetty.orbit" module="javax.mail.glassfish"/>
      <exclude org="com.fasterxml.jackson.core" module="jackson-annotations"/>
      <exclude org="com.fasterxml.jackson.core" module="jackson-core"/>
      <exclude org="com.fasterxml.jackson.core" module="jackson-databind"/>
      <exclude org="com.fasterxml.jackson.module" module="jackson-module-scala_${spark-scala.version}"/>
      <exclude org="org.eclipse.jetty.orbit" module="javax.activation"/>
      <exclude org="org.apache.hadoop" />
      <exclude org="com.esotericsoftware.kryo" />
      <exclude org="jline" module="jline"/>
      <exclude org="com.google.guava" />
      <exclude org="io.netty" module="netty"/>
      <exclude org="io.netty" name="netty-all"/>
    </dependency>
    <dependency org="org.apache.spark" name="spark-yarn_${spark2-scala.version}" rev="${spark2.version}" conf="spark2->default">
      <exclude org="org.apache.hadoop" />
    </dependency>
    <dependency org="javax.servlet" name="javax.servlet-api" rev="3.0.1" conf="spark2->default;spark3->default"/>
    <dependency org="javax.servlet" name="javax.servlet-api" rev="3.1.0" conf="test->master"/>
    <dependency org="org.scala-lang.modules" name="scala-xml_${spark2-scala.version}" rev="${scala-xml.version}" conf="spark2->default"/>
    <dependency org="com.fasterxml.jackson.module" name="jackson-module-scala_${spark2-scala.version}" 
      rev="${jackson-module-scala_spark2.version}" conf="spark2->default"/>
    <dependency org="com.fasterxml.jackson.module" name="jackson-module-paranamer" 
      rev="${jackson-module-scala_spark2.version}" conf="spark2->default"/>

    <!-- for Spark 2.x integration -->
    <dependency org="org.apache.spark" name="spark-core_${spark3-scala.version}" rev="${spark3.version}" conf="spark3->default">
      <exclude org="org.eclipse.jetty.orbit" module="javax.servlet"/>
      <exclude org="org.eclipse.jetty.orbit" module="javax.transaction"/>
      <exclude org="org.eclipse.jetty.orbit" module="javax.mail.glassfish"/>
      <exclude org="com.fasterxml.jackson.core" module="jackson-annotations"/>
      <exclude org="com.fasterxml.jackson.core" module="jackson-core"/>
      <exclude org="com.fasterxml.jackson.core" module="jackson-databind"/>
      <exclude org="com.fasterxml.jackson.module" module="jackson-module-scala_${spark-scala.version}"/>
      <exclude org="org.eclipse.jetty.orbit" module="javax.activation"/>
      <exclude org="org.apache.hadoop" />
      <exclude org="com.esotericsoftware.kryo" />
      <exclude org="jline" module="jline"/>
      <exclude org="com.google.guava" />
      <exclude org="io.netty" module="netty"/>
      <exclude org="io.netty" name="netty-all"/>
      <exclude org="com.google.protobuf" name="protobuf-java" />
      <exclude org="org.apache.logging.log4j" name="log4j-core" />
      <exclude org="org.apache.logging.log4j" name="log4j-slf4j2-impl" />
      <exclude org="org.apache.logging.log4j" name="log4j-api" />
      <exclude org="org.apache.logging.log4j" name="log4j-1.2-api" />
      <exclude org="org.apache.zookeeper" />
    </dependency>
    <dependency org="org.apache.logging.log4j" name="log4j-core"        rev="2.23.1" conf="spark3->default"/>
    <dependency org="org.apache.logging.log4j" name="log4j-slf4j2-impl" rev="2.23.1" conf="spark3->default"/>
    <dependency org="org.apache.logging.log4j" name="log4j-api"         rev="2.23.1" conf="spark3->default"/>
    <dependency org="org.apache.logging.log4j" name="log4j-1.2-api"     rev="2.23.1" conf="spark3->default"/>

    <dependency org="org.apache.orc" name="orc-core" rev="1.8.7" conf="spark3->default">
        <artifact name="orc-core" m:classifier="shaded-protobuf"/>
    </dependency>
    <dependency org="org.apache.orc" name="orc-mapreduce" rev="1.8.7" conf="spark3->default">
        <artifact name="orc-mapreduce" m:classifier="shaded-protobuf"/>
    </dependency>



    <dependency org="org.apache.spark" name="spark-yarn_${spark3-scala.version}" rev="${spark3.version}" conf="spark3->default">
      <exclude org="org.apache.hadoop" />
      <exclude org="com.google.protobuf" name="protobuf-java" />
    </dependency>
    <dependency org="javax.servlet" name="javax.servlet-api" rev="3.0.1" conf="spark3->default;spark3->default"/>
    <dependency org="javax.servlet" name="javax.servlet-api" rev="3.1.0" conf="test->master"/>
    <dependency org="org.scala-lang.modules" name="scala-xml_${spark3-scala.version}" rev="${scala-xml.version}" conf="spark3->default"/>
    <dependency org="com.fasterxml.jackson.module" name="jackson-module-scala_${spark3-scala.version}" 
      rev="${jackson-module-scala_spark3.version}" conf="spark3->default"/>
    <dependency org="com.fasterxml.jackson.module" name="jackson-module-paranamer" 
      rev="${jackson-module-scala_spark3.version}" conf="spark3->default"/>

    <dependency org="asm" name="asm" rev="${asm.version}" conf="compile->master"/>

    <!-- for Tez integration -->
    <dependency org="org.apache.tez" name="tez" rev="${tez.version}"
       conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.tez" name="tez-common" rev="${tez.version}"
       conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.tez" name="tez-api" rev="${tez.version}"
       conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.tez" name="tez-dag" rev="${tez.version}"
       conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.tez" name="tez-runtime-internals" rev="${tez.version}"
       conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.tez" name="tez-runtime-library" rev="${tez.version}"
       conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.tez" name="tez-mapreduce" rev="${tez.version}"
       conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.tez" name="tez-yarn-timeline-history-with-acls" rev="${tez.version}"
       conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.tez" name="hadoop-shim" rev="${tez.version}"
       conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.commons" name="commons-collections4" rev="${commons-collections4.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.codehaus.jettison" name="jettison" rev="${jettison.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.commons" name="commons-math3" rev="${commons-math3.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.curator" name="curator-framework" rev="${curator.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.curator" name="curator-client" rev="${curator.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <dependency org="org.apache.curator" name="curator-recipes" rev="${curator.version}"
      conf="hadoop2->master;hadoop3->master"/>
    <!-- For dependency check -->
    <dependency org="org.owasp" name="dependency-check-ant"
                rev="${dependency-check-ant.version}" conf="owasp->default"/>
  </dependencies>
</ivy-module>

