<?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.

-->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.phoenix</groupId>
    <artifactId>phoenix</artifactId>
    <version>4.14.0-HBase-1.2</version>
  </parent>
  <artifactId>phoenix-pig</artifactId>
  <name>Phoenix - Pig</name>

  <properties>
    <top.dir>${project.basedir}/..</top.dir>
    <shaded.package>org.apache.phoenix.shaded</shaded.package>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.apache.phoenix</groupId>
      <artifactId>phoenix-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.phoenix</groupId>
      <artifactId>phoenix-core</artifactId>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.pig</groupId>
      <artifactId>pig</artifactId>
      <classifier>h2</classifier>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-testing-util</artifactId>
      <scope>test</scope>
      <optional>true</optional>
      <exclusions>
        <exclusion>
          <groupId>org.jruby</groupId>
          <artifactId>jruby-complete</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-it</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.jruby</groupId>
          <artifactId>jruby-complete</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-common</artifactId>
      <scope>test</scope>
      <type>test-jar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-protocol</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-client</artifactId>
    </dependency>
   <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-server</artifactId>
      <exclusions>
        <exclusion>
          <groupId>xom</groupId>
          <artifactId>xom</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-server</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-client</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-hadoop-compat</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-hadoop-compat</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-hadoop2-compat</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-hadoop2-compat</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-annotations</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-minicluster</artifactId>
    </dependency>
    <!-- Test Dependencies -->
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-all</artifactId>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.tephra</groupId>
      <artifactId>tephra-core</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>${maven-dependency-plugin.version}</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <finalName>phoenix-${project.version}-pig</finalName>
              <shadedArtifactAttached>false</shadedArtifactAttached>
              <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
              <shadeTestJar>false</shadeTestJar>
              <transformers>
                <transformer
                        implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
                  <resource>README.md</resource>
                  <file>${project.basedir}/../README.md</file>
                </transformer>
                <transformer
                        implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
                  <resource>LICENSE.txt</resource>
                  <file>${project.basedir}/../LICENSE</file>
                </transformer>
                <transformer
                    implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
                  <resource>NOTICE</resource>
                  <file>${project.basedir}/../NOTICE</file>
                </transformer>
              </transformers>
              <artifactSet>
                <includes>
                  <include>*:*</include>
                </includes>
                <excludes>
                  <exclude>org.apache.phoenix:phoenix-client</exclude>
                  <exclude>org.apache.pig:pig</exclude>
                  <exclude>joda-time:joda-time</exclude>
                  <exclude>xom:xom</exclude>
                </excludes>
              </artifactSet>
              <filters>
                <filter>
                  <artifact>*:*</artifact>
                  <excludes>
                    <exclude>META-INF/*.SF</exclude>
                    <exclude>META-INF/*.DSA</exclude>
                    <exclude>META-INF/*.RSA</exclude>
                    <exclude>META-INF/license/*</exclude>
                    <exclude>LICENSE.*</exclude>
                    <exclude>NOTICE.*</exclude>
                  </excludes>
                </filter>
              </filters>
              <relocations>
                <!-- COM relocation -->
                <relocation>
                  <pattern>com.codahale</pattern>
                  <shadedPattern>${shaded.package}.com.codahale</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.fasterxml</pattern>
                  <shadedPattern>${shaded.package}.com.fasterxml</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.google.common</pattern>
                  <shadedPattern>${shaded.package}.com.google.common</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.jamesmurty</pattern>
                  <shadedPattern>${shaded.package}.com.jamesmurty</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.jcraft</pattern>
                  <shadedPattern>${shaded.package}.com.jcraft</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.lmax</pattern>
                  <shadedPattern>${shaded.package}.com.lmax</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.sun.jersey</pattern>
                  <shadedPattern>${shaded.package}.com.sun.jersey</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.thoughtworks</pattern>
                  <shadedPattern>${shaded.package}.com.thoughtworks</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>com.yammer</pattern>
                  <shadedPattern>${shaded.package}.com.yammer</shadedPattern>
                </relocation>
                <!-- IO relocations -->
                <relocation>
                  <pattern>io.netty</pattern>
                  <shadedPattern>${shaded.package}.io.netty</shadedPattern>
                </relocation>
                <!-- ORG relocations -->
                <relocation>
                  <pattern>org.antlr</pattern>
                  <shadedPattern>${shaded.package}.org.antlr</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.aopalliance</pattern>
                  <shadedPattern>${shaded.package}.org.aopalliance</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.codehaus</pattern>
                  <shadedPattern>${shaded.package}.org.codehaus</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.fusesource</pattern>
                  <shadedPattern>${shaded.package}.org.fusesource</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.hamcrest</pattern>
                  <shadedPattern>${shaded.package}.org.hamcrest</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.hsqldb</pattern>
                  <shadedPattern>${shaded.package}.org.hsqldb</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.iq80</pattern>
                  <shadedPattern>${shaded.package}.org.iq80</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.jamon</pattern>
                  <shadedPattern>${shaded.package}.org.jamon</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.jboss</pattern>
                  <shadedPattern>${shaded.package}.org.jboss</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.jcodings</pattern>
                  <shadedPattern>${shaded.package}.org.jcodings</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.jets3t</pattern>
                  <shadedPattern>${shaded.package}.org.jets3t</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.joni</pattern>
                  <shadedPattern>${shaded.package}.org.joni</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.junit</pattern>
                  <shadedPattern>${shaded.package}.org.junit</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.kosmix</pattern>
                  <shadedPattern>${shaded.package}.org.kosmix</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.mortbay</pattern>
                  <shadedPattern>${shaded.package}.org.mortbay</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.objectweb</pattern>
                  <shadedPattern>${shaded.package}.org.objectweb</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.stringtemplate</pattern>
                  <shadedPattern>${shaded.package}.org.stringtemplate</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.tukaani</pattern>
                  <shadedPattern>${shaded.package}.org.tukaani</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.znerd</pattern>
                  <shadedPattern>${shaded.package}.org.znerd</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.avro</pattern>
                  <shadedPattern>${shaded.package}.org.apache.avro</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.commons</pattern>
                  <shadedPattern>${shaded.package}.org.apache.commons</shadedPattern>
                  <excludes>
                    <exclude>org.apache.commons.csv.**</exclude>
                    <exclude>org.apache.commons.logging.**</exclude>
                  </excludes>
                </relocation>
                <relocation>
                  <pattern>org.apache.directory</pattern>
                  <shadedPattern>${shaded.package}.org.apache.directory</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.http</pattern>
                  <shadedPattern>${shaded.package}.org.apache.http</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.jasper</pattern>
                  <shadedPattern>${shaded.package}.org.apache.jasper</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.jute</pattern>
                  <shadedPattern>${shaded.package}.org.apache.jute</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.mina</pattern>
                  <shadedPattern>${shaded.package}.org.apache.mina</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.oro</pattern>
                  <shadedPattern>${shaded.package}.org.apache.oro</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.taglibs</pattern>
                  <shadedPattern>${shaded.package}.org.apache.taglibs</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.thrift</pattern>
                  <shadedPattern>${shaded.package}.org.apache.thrift</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.tools</pattern>
                  <shadedPattern>${shaded.package}.org.apache.tools</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.twill</pattern>
                  <shadedPattern>${shaded.package}.org.apache.twill</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.velocity</pattern>
                  <shadedPattern>${shaded.package}.org.apache.velocity</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>org.apache.zookeeper</pattern>
                  <shadedPattern>${shaded.package}.org.apache.zookeeper</shadedPattern>
                </relocation>
                <!-- NET relocations -->
                <relocation>
                  <pattern>net</pattern>
                  <shadedPattern>${shaded.package}.net</shadedPattern>
                </relocation>
                <!-- Misc relocations -->
                <relocation>
                  <pattern>antlr</pattern>
                  <shadedPattern>${shaded.package}.antlr</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>it.unimi</pattern>
                  <shadedPattern>${shaded.package}.it.unimi</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>jline</pattern>
                  <shadedPattern>${shaded.package}.jline</shadedPattern>
                </relocation>
                <relocation>
                  <pattern>junit</pattern>
                  <shadedPattern>${shaded.package}.junit</shadedPattern>
                </relocation>
              </relocations>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
