<?xml version="1.0"?>
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!--
      /**
       * 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.
       */
      -->
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>hbase-build-configuration</artifactId>
        <groupId>org.apache.hbase</groupId>
        <version>3.0.0-SNAPSHOT</version>
        <relativePath>../hbase-build-configuration</relativePath>
    </parent>
    <artifactId>hbase-shaded</artifactId>
    <name>Apache HBase - Shaded</name>
    <description>Module of HBase with most deps shaded.</description>
    <packaging>pom</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>
      <shaded.prefix>org.apache.hadoop.hbase.shaded</shaded.prefix>
    </properties>
    <modules>
        <module>hbase-shaded-client-byo-hadoop</module>
        <module>hbase-shaded-client</module>
        <module>hbase-shaded-mapreduce</module>
        <module>hbase-shaded-testing-util</module>
        <module>hbase-shaded-testing-util-tester</module>
        <module>hbase-shaded-check-invariants</module>
        <module>hbase-shaded-with-hadoop-check-invariants</module>
    </modules>
    <dependencies>
      <dependency>
         <groupId>org.apache.hbase</groupId>
         <artifactId>hbase-resource-bundle</artifactId>
         <version>${project.version}</version>
         <optional>true</optional>
      </dependency>
      <!-- log4j has to be non-optional for Hadoop 2 atleast -->
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
      </dependency>
      <!-- put the log implementations to optional -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <optional>true</optional>
      </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <!--Make it so assembly:single does nothing in here-->
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <skipAssembly>true</skipAssembly>
                </configuration>
            </plugin>
            <!-- licensing info from our dependencies -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-remote-resources-plugin</artifactId>
              <executions>
                <execution>
                  <id>aggregate-licenses</id>
                  <goals>
                    <goal>process</goal>
                  </goals>
                  <configuration>
                    <properties>
                      <copyright-end-year>${build.year}</copyright-end-year>
                      <debug-print-included-work-info>${license.debug.print.included}</debug-print-included-work-info>
                      <bundled-dependencies>${license.bundles.dependencies}</bundled-dependencies>
                      <bundled-jquery>${license.bundles.jquery}</bundled-jquery>
                      <bundled-logo>${license.bundles.logo}</bundled-logo>
                      <bundled-bootstrap>${license.bundles.bootstrap}</bundled-bootstrap>
                    </properties>
                    <resourceBundles>
                      <resourceBundle>${project.groupId}:hbase-resource-bundle:${project.version}</resourceBundle>
                    </resourceBundles>
                    <supplementalModelArtifacts>
                      <supplementalModelArtifact>${project.groupId}:hbase-resource-bundle:${project.version}</supplementalModelArtifact>
                    </supplementalModelArtifacts>
                    <supplementalModels>
                      <supplementalModel>supplemental-models.xml</supplementalModel>
                    </supplementalModels>
                  </configuration>
                </execution>
              </executions>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <!--Make it so assembly:single does nothing in here-->
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <skipAssembly>true</skipAssembly>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>aggregate-into-a-jar-with-relocated-third-parties</id>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <createSourcesJar>false</createSourcesJar>
                                <shadedArtifactAttached>false</shadedArtifactAttached>
                                <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
                                <shadeTestJar>false</shadeTestJar>
                                <artifactSet>
                                    <excludes>
                                        <!-- exclude J2EE modules that come in for JDK11+ (since
                                             hadoop-3.2.0) or modules that come in for JDK8+ but
                                             need not be included -->
                                        <exclude>javax.annotation:javax.annotation-api</exclude>
                                        <exclude>javax.activation:javax.activation-api</exclude>
                                        <!-- default to excluding Hadoop, have module that want
                                             to include it redefine the exclude list -->
                                        <exclude>org.apache.hadoop:*</exclude>
                                        <!-- the rest of this needs to be kept in sync with any
                                             hadoop-including module -->
                                        <exclude>org.apache.hbase:hbase-resource-bundle</exclude>
                                        <exclude>org.slf4j:*</exclude>
                                        <exclude>com.google.code.findbugs:*</exclude>
                                        <exclude>com.github.stephenc.findbugs:*</exclude>
                                        <exclude>com.github.spotbugs:*</exclude>
                                        <exclude>org.apache.htrace:*</exclude>
                                        <exclude>org.apache.yetus:*</exclude>
                                        <exclude>log4j:*</exclude>
                                        <exclude>commons-logging:*</exclude>
                                    </excludes>
                                </artifactSet>
                                <relocations>
                                    <!-- top level com not including sun-->
                                    <relocation>
                                        <pattern>com.cedarsoftware</pattern>
                                        <shadedPattern>${shaded.prefix}.com.cedarsoftware</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.codahale</pattern>
                                        <shadedPattern>${shaded.prefix}.com.codahale</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.ctc</pattern>
                                        <shadedPattern>${shaded.prefix}.com.ctc</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.dropwizard</pattern>
                                        <shadedPattern>${shaded.prefix}.com.dropwizard</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.fasterxml</pattern>
                                        <shadedPattern>${shaded.prefix}.com.fasterxml</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.github.benmanes.caffeine</pattern>
                                        <shadedPattern>${shaded.prefix}.com.github.benmanes.caffeine</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.google</pattern>
                                        <shadedPattern>${shaded.prefix}.com.google</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.jamesmurty</pattern>
                                        <shadedPattern>${shaded.prefix}.com.jamesmurty</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.jcraft</pattern>
                                        <shadedPattern>${shaded.prefix}.com.jcraft</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.lmax</pattern>
                                        <shadedPattern>${shaded.prefix}.com.lmax</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.microsoft</pattern>
                                        <shadedPattern>${shaded.prefix}.com.microsoft</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.nimbusds</pattern>
                                        <shadedPattern>${shaded.prefix}.com.nimbusds</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.squareup</pattern>
                                        <shadedPattern>${shaded.prefix}.com.squareup</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.thoughtworks</pattern>
                                        <shadedPattern>${shaded.prefix}.com.thoughtworks</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>com.zaxxer</pattern>
                                        <shadedPattern>${shaded.prefix}.com.zaxxer</shadedPattern>
                                    </relocation>

                                    <!-- dnsjava -->
                                    <relocation>
                                        <pattern>org.xbill</pattern>
                                        <shadedPattern>${shaded.prefix}.org.xbill</shadedPattern>
                                    </relocation>

                                    <!-- netty family -->
                                    <relocation>
                                        <pattern>org.jboss.netty</pattern>
                                        <shadedPattern>${shaded.prefix}.org.jboss.netty</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>io.netty</pattern>
                                        <shadedPattern>${shaded.prefix}.io.netty</shadedPattern>
                                    </relocation>

                                    <!-- top level okio -->
                                    <relocation>
                                        <pattern>okio</pattern>
                                        <shadedPattern>${shaded.prefix}.okio</shadedPattern>
                                    </relocation>

                                    <!-- top level org -->
                                    <relocation>
                                      <pattern>org.checkerframework</pattern>
                                      <shadedPattern>${shaded.prefix}.org.checkerframework</shadedPattern>
                                    </relocation>
                                    <relocation>
                                      <pattern>org.codehaus</pattern>
                                      <shadedPattern>${shaded.prefix}.org.codehaus</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.eclipse</pattern>
                                        <shadedPattern>${shaded.prefix}.org.eclipse</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.ehcache</pattern>
                                        <shadedPattern>${shaded.prefix}.org.ehcache</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.jcodings</pattern>
                                        <shadedPattern>${shaded.prefix}.org.jcodings</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.joni</pattern>
                                        <shadedPattern>${shaded.prefix}.org.joni</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.mortbay</pattern>
                                        <shadedPattern>${shaded.prefix}.org.mortbay</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.nustaq</pattern>
                                        <shadedPattern>${shaded.prefix}.org.nustaq</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.terracotta</pattern>
                                        <shadedPattern>${shaded.prefix}.org.terracotta</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.tukaani</pattern>
                                        <shadedPattern>${shaded.prefix}.org.tukaani</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.xerial</pattern>
                                        <shadedPattern>${shaded.prefix}.org.xerial</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.znerd</pattern>
                                        <shadedPattern>${shaded.prefix}.org.znerd</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.aopalliance</pattern>
                                        <shadedPattern>${shaded.prefix}.org.aopalliance</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.fusesource</pattern>
                                        <shadedPattern>${shaded.prefix}.org.fusesource</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.iq80</pattern>
                                        <shadedPattern>${shaded.prefix}.org.iq80</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.jamon</pattern>
                                        <shadedPattern>${shaded.prefix}.org.jamon</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.jets3t</pattern>
                                        <shadedPattern>${shaded.prefix}.org.jets3t</shadedPattern>
                                    </relocation>
                                    <!-- poorly named add-on package from jets3t dependency. TODO can we just exclude these? -->
                                    <relocation>
                                        <pattern>contribs.mx</pattern>
                                        <shadedPattern>${shaded.prefix}.contribs.mx</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.objectweb</pattern>
                                        <shadedPattern>${shaded.prefix}.org.objectweb</shadedPattern>
                                    </relocation>


                                    <!-- org.apache relocations not in org.apache.hadoop or org.apache.commons -->
                                    <relocation>
                                        <pattern>org.apache.avro</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.avro</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.curator</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.curator</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.directory</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.directory</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.http</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.http</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.jasper</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.jasper</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.jute</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.jute</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.kerby</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.kerby</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.taglibs</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.taglibs</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.zookeeper</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.zookeeper</shadedPattern>
                                    </relocation>

                                    <!-- org.apache.commons not including logging -->
                                    <relocation>
                                        <pattern>org.apache.commons.validator</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.validator</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.beanutils</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.beanutils</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.cli</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.cli</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.collections</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.collections</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.configuration</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.configuration</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.crypto</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.crypto</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.csv</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.csv</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.daemon</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.daemon</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.io</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.io</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.math</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.math</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.math3</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.math3</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.net</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.net</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.lang</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.lang</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.lang3</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.lang3</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.el</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.el</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.httpclient</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.httpclient</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.compress</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.compress</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.digester</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.digester</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.codec</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.codec</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.apache.commons.text</pattern>
                                        <shadedPattern>${shaded.prefix}.org.apache.commons.text</shadedPattern>
                                    </relocation>

                                    <!-- top level net-->
                                    <relocation>
                                        <pattern>net/</pattern>
                                        <shadedPattern>${shaded.prefix}.net.</shadedPattern>
                                    </relocation>

                                </relocations>
                                <transformers>
                                  <!-- Need to filter out some extraneous license files.
                                       Don't use the ApacheLicenseRT because it just removes all
                                       META-INF/LICENSE(.txt)? files, including ours. -->
                                  <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                                    <resources>
                                      <resource>LICENSE.txt</resource>
                                      <resource>ASL2.0</resource>
                                      <!-- also this unneeded doc -->
                                      <resource>overview.html</resource>
                                    </resources>
                                  </transformer>
                                  <!-- Where notices exist, just concat them -->
                                  <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
                                    <addHeader>false</addHeader>
                                    <projectName>${project.name}</projectName>
                                  </transformer>
                                  <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer">
                                  </transformer>
                                </transformers>
                                <filters>
                                    <!-- remove utility classes which are not required from dnsjava -->
                                    <filter>
                                        <artifact>dnsjava:dnsjava</artifact>
                                        <excludes>
                                            <exclude>dig*</exclude>
                                            <exclude>jnamed*</exclude>
                                            <exclude>lookup*</exclude>
                                            <exclude>update*</exclude>
                                        </excludes>
                                    </filter>
                                  <filter>
                                    <!-- this is a signed osgi bundle -->
                                    <artifact>org.eclipse.jetty.orbit:javax.servlet.jsp.jstl</artifact>
                                    <excludes>
                                      <exclude>META-INF/ECLIPSEF.SF</exclude>
                                      <exclude>META-INF/ECLIPSEF.RSA</exclude>
                                    </excludes>
                                  </filter>
                                  <filter>
                                    <!-- Duplication of classes that ship in commons-collections 2.x and 3.x
                                         If we stop bundling a relevant commons-collections artifact we'll
                                         need to revisit. See: https://s.apache.org/e09o
                                    -->
                                    <artifact>commons-beanutils:commons-beanutils-core</artifact>
                                    <excludes>
                                      <exclude>org/apache/commons/collections/*.class</exclude>
                                    </excludes>
                                  </filter>
                                  <filter>
                                    <!-- server side webapps that we don't need -->
                                    <artifact>org.apache.hadoop:hadoop-yarn-common</artifact>
                                    <excludes>
                                      <exclude>webapps/*</exclude>
                                      <exclude>webapps/**/*</exclude>
                                    </excludes>
                                  </filter>
                                  <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                      <!-- proto source files aren't needed -->
                                      <exclude>*.proto</exclude>
                                      <exclude>**/*.proto</exclude>
                                      <!-- We already concat NOTICE, safe to drop individual ones -->
                                      <exclude>LICENSE</exclude>
                                      <exclude>NOTICE</exclude>
                                    </excludes>
                                  </filter>
                                  <filter>
                                    <!-- skip french localization -->
                                    <artifact>org.apache.commons:commons-math3</artifact>
                                    <excludes>
                                      <exclude>assets/org/apache/commons/math3/**/*</exclude>
                                    </excludes>
                                  </filter>
                                  <filter>
                                    <!-- appears to be the result of a conflict in hadoop artifacts -->
                                    <artifact>org.apache.hadoop:*</artifact>
                                    <excludes>
                                      <exclude>mapred-default.xml.orig</exclude>
                                    </excludes>
                                  </filter>
                                  <!-- unnecessary files that mess up our invariants check -->
                                  <filter>
                                    <artifact>org.eclipse.jetty:*</artifact>
                                    <excludes>
                                      <exclude>about.html</exclude>
                                      <exclude>jetty-dir.css</exclude>
                                    </excludes>
                                  </filter>
                                  <filter>
                                    <artifact>org.apache.kerby:*</artifact>
                                    <excludes>
                                      <exclude>krb5-template.conf</exclude>
                                      <exclude>krb5_udp-template.conf</exclude>
                                      <exclude>ccache.txt</exclude>
                                      <exclude>keytab.txt</exclude>
                                    </excludes>
                                  </filter>
                                </filters>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
