hbase/hbase-shaded/pom.xml

575 lines
27 KiB
XML

<?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>${revision}</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.4.1</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>