<?xml version="1.0" encoding="UTF-8"?>
<!--
  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>5.3.0-SNAPSHOT</version>
  </parent>
  <artifactId>phoenix-server-${hbase.suffix}</artifactId>
  <name>Phoenix Server JAR</name>
  <description>Phoenix HBase Server Side JAR</description>
  <packaging>jar</packaging>
  <properties>
    <!-- Don't make a test-jar -->
    <maven.test.skip>true</maven.test.skip>
    <!-- Don't make a source-jar -->
    <source.skip>true</source.skip>
    <license.bundles.dependencies>true</license.bundles.dependencies>
  </properties>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <plugin>
          <!-- RAT gets really confused on the shaded subprojects,
          and there is nothing to audit here -->
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <configuration>
            <ignoredDependencies>
              <ignoredDependency>*</ignoredDependency>
            </ignoredDependencies>
           </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <configuration>
            <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>META-INF/NOTICE</exclude>
                  <exclude>LICENSE.*</exclude>
                  <exclude>NOTICE.*</exclude>
                  <exclude>NOTICE</exclude>
                  <exclude>README*</exclude>
                </excludes>
              </filter>
             <filter>
                <artifact>org.apache.hadoop:hadoop-yarn-common</artifact>
                <excludes>
                  <exclude>org/apache/hadoop/yarn/factories/package-info.class</exclude>
                  <exclude>org/apache/hadoop/yarn/util/package-info.class</exclude>
                  <exclude>org/apache/hadoop/yarn/factory/providers/package-info.class</exclude>
                  <exclude>org/apache/hadoop/yarn/client/api/impl/package-info.class</exclude>
                  <exclude>org/apache/hadoop/yarn/client/api/package-info.class</exclude>
                  <exclude>webapps/**</exclude>
                </excludes>
              </filter>
              <!-- Phoenix specific -->
              <filter>
                <artifact>org.apache.commons:commons-math3</artifact>
                <excludes>
                  <exclude>assets/**</exclude>
                </excludes>
              </filter>
              <filter>
                <artifact>org.apache.hbase:hbase-server</artifact>
                <excludes>
                  <exclude>hbase-webapps/**</exclude>
                </excludes>
              </filter>
              <filter>
                <artifact>org.apache.hbase.thirdparty:*</artifact>
                <excludes>
                  <exclude>/**</exclude>
                  <exclude>webapps/**</exclude>
                </excludes>
              </filter>
              <!-- Phoenix specific -->
            </filters>
            <transformers>
              <transformer
                  implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
              <transformer
                  implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
                <resource>csv-bulk-load-config.properties</resource>
                <file>
                  ${project.basedir}/../config/csv-bulk-load-config.properties
                </file>
              </transformer>
              <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>
            <relocations>
              <relocation>
                <pattern>org/</pattern>
                <shadedPattern>${shaded.package}.org.</shadedPattern>
                <excludes>
                  <exclude>org/apache/hadoop/**</exclude>
                  <!-- Our non-shaded htrace and logging libraries -->
                  <exclude>org/apache/htrace/**</exclude>
                  <exclude>org/slf4j/**</exclude>
                  <exclude>org/apache/commons/logging/**</exclude>
                  <exclude>org/apache/log4j/**</exclude>
                  <exclude>org/apache/logging/log4j/**</exclude>
                  <!-- Not the org/ packages that are a part of the jdk -->
                  <exclude>org/ietf/jgss/**</exclude>
                  <exclude>org/omg/**</exclude>
                  <exclude>org/w3c/dom/**</exclude>
                  <exclude>org/xml/sax/**</exclude>
                  <!-- Not needed for client, we set this to provided -->
                  <exclude>org/eclipse/jetty/**</exclude>
                  <!-- Extras compared to Hadoop -->
                  <!-- Hbase classes  -->
                  <exclude>org/apache/hbase/**</exclude>
                  <!-- Phoenix classes -->
                  <exclude>org/apache/phoenix/**</exclude>
                  <!-- We are assuming that the Omid coprocessors are not added separately -->
                  <exclude>org/apache/omid/**</exclude>
                  <!-- See PHOENIX-7118
                 We expect this to come from the unshaded hadoop on the classpath.
                 That is always true for the HBase server classpath -->
                <exclude>org/apache/commons/configuration2/**</exclude>
                </excludes>
              </relocation>
              <!-- We use the relocate-by default settings from -client, instead of relocating
              one-by-one as in phoenix-mapreduce, because we have unshaded protobuf 2.5.0 on the
              classpath, and don't need special handling for it -->
              <relocation>
                <pattern>com/</pattern>
                <shadedPattern>${shaded.package}.com.</shadedPattern>
                <excludes>
                  <!-- Not the com/ packages that are a part of particular jdk implementations -->
                  <exclude>com/sun/tools/**</exclude>
                  <exclude>com/sun/javadoc/**</exclude>
                  <exclude>com/sun/security/**</exclude>
                  <exclude>com/sun/jndi/**</exclude>
                  <exclude>com/sun/management/**</exclude>
                  <exclude>com/sun/management/**</exclude>
                  <!-- Protobuf 2.5.0 is already on the HBase server classpath -->
                  <groupId>com/google/protobuf/**</groupId>
                </excludes>
              </relocation>
              <relocation>
                <pattern>io/</pattern>
                <shadedPattern>${shaded.package}.io.</shadedPattern>
                <excludes>
                  <!-- Exclude config keys for Hadoop that look like package names -->
                  <exclude>io/compression/**</exclude>
                  <exclude>io/mapfile/**</exclude>
                  <exclude>io/map/index/*</exclude>
                  <exclude>io/seqfile/**</exclude>
                  <exclude>io/file/buffer/size</exclude>
                  <exclude>io/skip/checksum/errors</exclude>
                  <exclude>io/sort/*</exclude>
                  <exclude>io/serializations</exclude>
                </excludes>
              </relocation>
              <!-- JSRs that haven't made it to inclusion in J2SE -->
              <relocation>
                <pattern>javax/el/</pattern>
                <shadedPattern>${shaded.package}.javax.el.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>javax/cache/</pattern>
                <shadedPattern>${shaded.package}.javax.cache.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>javax/servlet/jsp/</pattern>
                <shadedPattern>${shaded.package}.javax.servlet.jsp.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>javax/ws/</pattern>
                <shadedPattern>${shaded.package}.javax.ws.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>javax/annotation/</pattern>
                <shadedPattern>${shaded.package}.javax.annotation.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>javax/inject/</pattern>
                <shadedPattern>${shaded.package}.javax.inject.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>javax/validation/</pattern>
                <shadedPattern>${shaded.package}.javax.validation.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>javax/xml/bind/</pattern>
                <shadedPattern>${shaded.package}.javax.xml.bind.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>javax/activation/</pattern>
                <shadedPattern>${shaded.package}.javax.activation.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>net/</pattern>
                <shadedPattern>${shaded.package}.net.</shadedPattern>
                <excludes>
                  <!-- Exclude config keys for Hadoop that look like package names -->
                  <exclude>net/topology/**</exclude>
                </excludes>
              </relocation>
              <!-- okio declares a top level package instead of nested -->
              <relocation>
                <pattern>okio/</pattern>
                <shadedPattern>${shaded.package}.okio.</shadedPattern>
              </relocation>
              <!-- Phoenix specific relocations -->
              <relocation>
                <pattern>it/</pattern>
                <shadedPattern>${shaded.package}.it.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>javassist/</pattern>
                <shadedPattern>${shaded.package}.javassist.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>jersey/</pattern>
                <shadedPattern>${shaded.package}.jersey.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>jline/</pattern>
                <shadedPattern>${shaded.package}.jline.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>mozilla/</pattern>
                <shadedPattern>${shaded.package}.mozilla.</shadedPattern>
              </relocation>
              <relocation>
                <pattern>tables/</pattern>
                <shadedPattern>${shaded.package}.tables.</shadedPattern>
              </relocation>
              <!-- Phoenix specific relocations end -->
            </relocations>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <id>server-shaded</id>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
              <shadeTestJar>false</shadeTestJar>
              <createSourcesJar>${shadeSources}</createSourcesJar>
              <dependencyReducedPomLocation>${basedir}/target/pom.xml</dependencyReducedPomLocation>
              <artifactSet>
                <includes>
                  <include>*:*</include>
                </includes>
                <excludes>
                  <exclude>org.apache.phoenix:phoenix-client</exclude>
                  <exclude>xom:xom</exclude>
                </excludes>
              </artifactSet>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <!-- These must not be moved to a parent module, see PHOENIX-6377 -->
    <!-- Depend on all other internal projects -->
    <dependency>
      <groupId>org.apache.phoenix</groupId>
      <artifactId>phoenix-core-server</artifactId>
      <exclusions>
        <!-- 5.2 no longer uses reload4j, but we still exclude in case something pulls these
        transitively -->
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-reload4j</artifactId>
        </exclusion>
        <exclusion>
          <groupId>ch.qos.reload4j</groupId>
          <artifactId>reload4j</artifactId>
        </exclusion>
        <!-- These are coming from transitive dependencies -->
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.phoenix</groupId>
      <artifactId>phoenix-hbase-compat-${hbase.compat.version}</artifactId>
      <optional>false</optional>
    </dependency>

    <!-- Exclude servlet and Jetty. We don't need it, and it causes problems with minicluster -->
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <scope>provided</scope>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-util</artifactId>
      <scope>provided</scope>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-util-ajax</artifactId>
      <scope>provided</scope>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-servlet</artifactId>
      <scope>provided</scope>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-webapp</artifactId>
      <scope>provided</scope>
      <version>${jetty.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <scope>provided</scope>
      <version>${javax.servlet-api.version}</version>
    </dependency>

     <!-- Mark every Hadoop jar as provided -->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-core</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-annotations</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-auth</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-yarn-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs-client</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-distcp</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-common</artifactId>
      <scope>provided</scope>
    </dependency>

    <!-- Mark HBase as provided, too -->
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-client</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-common</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-mapreduce</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-replication</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-endpoint</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-metrics-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-metrics</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-protocol</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-protocol-shaded</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-server</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-hadoop-compat</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-hadoop2-compat</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-zookeeper</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase.thirdparty</groupId>
      <artifactId>hbase-shaded-netty</artifactId>
      <!-- random version, for exclusion only -->
      <version>4.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase.thirdparty</groupId>
      <artifactId>hbase-shaded-miscellaneous</artifactId>
      <!-- random version, for exclusion only -->
      <version>4.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase.thirdparty</groupId>
      <artifactId>hbase-shaded-protobuf</artifactId>
      <!-- random version, for exclusion only -->
      <version>4.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <!-- provided by Hadoop -->
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-configuration2</artifactId>
      <!-- random version, for exclusion only -->
      <version>2.1.1</version>
      <scope>provided</scope>
    </dependency>

    <!-- Other dependencies we don't want to shade in, but are not transitively excluded by the
    above for some reason -->
    <dependency>
      <!-- HBase-shaded already provides this -->
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <!-- random version, for exclusion only -->
      <version>11.0.2</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.github.stephenc.findbugs</groupId>
      <artifactId>findbugs-annotations</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</project>
