<?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>2.4.12-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>
         <optional>true</optional>
      </dependency>
      <!-- put the log implementations to optional -->
      <dependency>
        <groupId>ch.qos.reload4j</groupId>
        <artifactId>reload4j</artifactId>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-reload4j</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>
                    <version>3.2.4</version>
                    <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>
                                        <exclude>jakarta.activation:jakarta.activation-api</exclude> <!-- Hadoop 3.3.1 -->
                                        <exclude>jakarta.ws.rs:jakarta.ws.rs-api</exclude>
                                        <exclude>jakarta.annotation:jakarta.annotation-api</exclude>
                                        <exclude>jakarta.validation:jakarta.validation-api</exclude>
                                        <exclude>org.glassfish.hk2.external:jakarta.inject</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>ch.qos.reload4j:*</exclude>
                                        <exclude>commons-logging:*</exclude>
                                        <exclude>org.javassist:*</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.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>
