<?xml version="1.0" encoding="UTF-8"?>
<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>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-build-configuration</artifactId>
    <version>3.0.0-alpha-4-SNAPSHOT</version>
    <relativePath>../hbase-build-configuration</relativePath>
  </parent>
  <artifactId>hbase-shaded</artifactId>
  <packaging>pom</packaging>
  <name>Apache HBase - Shaded</name>
  <description>Module of HBase with most deps shaded.</description>
  <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>
  <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>
  <dependencies>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-resource-bundle</artifactId>
      <optional>true</optional>
    </dependency>
    <!-- put the log implementations to optional -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <optional>true</optional>
    </dependency>
  </dependencies>
  <build>
    <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>
              <goals>
                <goal>shade</goal>
              </goals>
              <phase>package</phase>
              <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>org.apache.logging.log4j:*</exclude>
                    <exclude>commons-logging:*</exclude>
                    <exclude>org.javassist:*</exclude>
                    <exclude>io.opentelemetry:*</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>
                  <relocation>
                    <pattern>org.agrona</pattern>
                    <shadedPattern>${shaded.prefix}.org.agrona</shadedPattern>
                  </relocation>
                  <!-- okhttp -->
                  <relocation>
                    <pattern>okhttp3.</pattern>
                    <shadedPattern>${shaded.prefix}.okhttp3.</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>kotlin.</pattern>
                    <shadedPattern>${shaded.prefix}.kotlin.</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"/>
                </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>
    <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-vega>${license.bundles.vega}</bundled-vega>
                <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>
  </build>
</project>
