2 <project xmlns="https://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
7 * Licensed to the Apache Software Foundation (ASF) under one
8 * or more contributor license agreements. See the NOTICE file
9 * distributed with this work for additional information
10 * regarding copyright ownership. The ASF licenses this file
11 * to you under the Apache License, Version 2.0 (the
12 * "License"); you may not use this file except in compliance
13 * with the License. You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
24 <modelVersion>4.0.0</modelVersion>
26 <artifactId>hbase-build-configuration</artifactId>
27 <groupId>org.apache.hbase</groupId>
28 <version>3.0.0-SNAPSHOT</version>
29 <relativePath>../hbase-build-configuration</relativePath>
31 <artifactId>hbase-shaded</artifactId>
32 <name>Apache HBase - Shaded</name>
33 <description>Module of HBase with most deps shaded.</description>
34 <packaging>pom</packaging>
36 <!-- Don't make a test-jar -->
37 <maven.test.skip>true</maven.test.skip>
38 <!-- Don't make a source-jar -->
39 <source.skip>true</source.skip>
40 <license.bundles.dependencies>true</license.bundles.dependencies>
41 <shaded.prefix>org.apache.hadoop.hbase.shaded</shaded.prefix>
44 <module>hbase-shaded-client-byo-hadoop</module>
45 <module>hbase-shaded-client</module>
46 <module>hbase-shaded-mapreduce</module>
47 <module>hbase-shaded-testing-util</module>
48 <module>hbase-shaded-testing-util-tester</module>
49 <module>hbase-shaded-check-invariants</module>
50 <module>hbase-shaded-with-hadoop-check-invariants</module>
54 <groupId>org.apache.hbase</groupId>
55 <artifactId>hbase-resource-bundle</artifactId>
56 <optional>true</optional>
58 <!-- put the log implementations to optional -->
60 <groupId>org.apache.logging.log4j</groupId>
61 <artifactId>log4j-api</artifactId>
62 <optional>true</optional>
65 <groupId>org.apache.logging.log4j</groupId>
66 <artifactId>log4j-core</artifactId>
67 <optional>true</optional>
70 <groupId>org.apache.logging.log4j</groupId>
71 <artifactId>log4j-slf4j-impl</artifactId>
72 <optional>true</optional>
78 <!--Make it so assembly:single does nothing in here-->
79 <artifactId>maven-assembly-plugin</artifactId>
81 <skipAssembly>true</skipAssembly>
84 <!-- licensing info from our dependencies -->
86 <groupId>org.apache.maven.plugins</groupId>
87 <artifactId>maven-remote-resources-plugin</artifactId>
90 <id>aggregate-licenses</id>
96 <copyright-end-year>${build.year}</copyright-end-year>
97 <debug-print-included-work-info>${license.debug.print.included}</debug-print-included-work-info>
98 <bundled-dependencies>${license.bundles.dependencies}</bundled-dependencies>
99 <bundled-jquery>${license.bundles.jquery}</bundled-jquery>
100 <bundled-logo>${license.bundles.logo}</bundled-logo>
101 <bundled-bootstrap>${license.bundles.bootstrap}</bundled-bootstrap>
104 <resourceBundle>${project.groupId}:hbase-resource-bundle:${project.version}</resourceBundle>
106 <supplementalModelArtifacts>
107 <supplementalModelArtifact>${project.groupId}:hbase-resource-bundle:${project.version}</supplementalModelArtifact>
108 </supplementalModelArtifacts>
110 <supplementalModel>supplemental-models.xml</supplementalModel>
111 </supplementalModels>
120 <!--Make it so assembly:single does nothing in here-->
121 <artifactId>maven-assembly-plugin</artifactId>
123 <skipAssembly>true</skipAssembly>
127 <groupId>org.apache.maven.plugins</groupId>
128 <artifactId>maven-shade-plugin</artifactId>
129 <version>3.2.4</version>
132 <id>aggregate-into-a-jar-with-relocated-third-parties</id>
133 <phase>package</phase>
138 <createSourcesJar>false</createSourcesJar>
139 <shadedArtifactAttached>false</shadedArtifactAttached>
140 <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
141 <shadeTestJar>false</shadeTestJar>
144 <!-- exclude J2EE modules that come in for JDK11+ (since
145 hadoop-3.2.0) or modules that come in for JDK8+ but
146 need not be included -->
147 <exclude>javax.annotation:javax.annotation-api</exclude>
148 <exclude>javax.activation:javax.activation-api</exclude>
149 <exclude>jakarta.activation:jakarta.activation-api</exclude> <!-- Hadoop 3.3.1 -->
150 <exclude>jakarta.ws.rs:jakarta.ws.rs-api</exclude>
151 <exclude>jakarta.annotation:jakarta.annotation-api</exclude>
152 <exclude>jakarta.validation:jakarta.validation-api</exclude>
153 <exclude>org.glassfish.hk2.external:jakarta.inject</exclude>
154 <!-- default to excluding Hadoop, have module that want
155 to include it redefine the exclude list -->
156 <exclude>org.apache.hadoop:*</exclude>
157 <!-- the rest of this needs to be kept in sync with any
158 hadoop-including module -->
159 <exclude>org.apache.hbase:hbase-resource-bundle</exclude>
160 <exclude>org.slf4j:*</exclude>
161 <exclude>com.google.code.findbugs:*</exclude>
162 <exclude>com.github.stephenc.findbugs:*</exclude>
163 <exclude>com.github.spotbugs:*</exclude>
164 <exclude>org.apache.htrace:*</exclude>
165 <exclude>org.apache.yetus:*</exclude>
166 <exclude>org.apache.logging.log4j:*</exclude>
167 <exclude>commons-logging:*</exclude>
168 <exclude>org.javassist:*</exclude>
169 <exclude>io.opentelemetry:*</exclude>
173 <!-- top level com not including sun-->
175 <pattern>com.cedarsoftware</pattern>
176 <shadedPattern>${shaded.prefix}.com.cedarsoftware</shadedPattern>
179 <pattern>com.codahale</pattern>
180 <shadedPattern>${shaded.prefix}.com.codahale</shadedPattern>
183 <pattern>com.ctc</pattern>
184 <shadedPattern>${shaded.prefix}.com.ctc</shadedPattern>
187 <pattern>com.dropwizard</pattern>
188 <shadedPattern>${shaded.prefix}.com.dropwizard</shadedPattern>
191 <pattern>com.fasterxml</pattern>
192 <shadedPattern>${shaded.prefix}.com.fasterxml</shadedPattern>
195 <pattern>com.github.benmanes.caffeine</pattern>
196 <shadedPattern>${shaded.prefix}.com.github.benmanes.caffeine</shadedPattern>
199 <pattern>com.google</pattern>
200 <shadedPattern>${shaded.prefix}.com.google</shadedPattern>
203 <pattern>com.jamesmurty</pattern>
204 <shadedPattern>${shaded.prefix}.com.jamesmurty</shadedPattern>
207 <pattern>com.jcraft</pattern>
208 <shadedPattern>${shaded.prefix}.com.jcraft</shadedPattern>
211 <pattern>com.lmax</pattern>
212 <shadedPattern>${shaded.prefix}.com.lmax</shadedPattern>
215 <pattern>com.microsoft</pattern>
216 <shadedPattern>${shaded.prefix}.com.microsoft</shadedPattern>
219 <pattern>com.nimbusds</pattern>
220 <shadedPattern>${shaded.prefix}.com.nimbusds</shadedPattern>
223 <pattern>com.squareup</pattern>
224 <shadedPattern>${shaded.prefix}.com.squareup</shadedPattern>
227 <pattern>com.thoughtworks</pattern>
228 <shadedPattern>${shaded.prefix}.com.thoughtworks</shadedPattern>
231 <pattern>com.zaxxer</pattern>
232 <shadedPattern>${shaded.prefix}.com.zaxxer</shadedPattern>
236 <pattern>org.xbill</pattern>
237 <shadedPattern>${shaded.prefix}.org.xbill</shadedPattern>
239 <!-- netty family -->
241 <pattern>org.jboss.netty</pattern>
242 <shadedPattern>${shaded.prefix}.org.jboss.netty</shadedPattern>
245 <pattern>io.netty</pattern>
246 <shadedPattern>${shaded.prefix}.io.netty</shadedPattern>
248 <!-- top level okio -->
250 <pattern>okio</pattern>
251 <shadedPattern>${shaded.prefix}.okio</shadedPattern>
253 <!-- top level org -->
255 <pattern>org.checkerframework</pattern>
256 <shadedPattern>${shaded.prefix}.org.checkerframework</shadedPattern>
259 <pattern>org.codehaus</pattern>
260 <shadedPattern>${shaded.prefix}.org.codehaus</shadedPattern>
263 <pattern>org.eclipse</pattern>
264 <shadedPattern>${shaded.prefix}.org.eclipse</shadedPattern>
267 <pattern>org.ehcache</pattern>
268 <shadedPattern>${shaded.prefix}.org.ehcache</shadedPattern>
271 <pattern>org.jcodings</pattern>
272 <shadedPattern>${shaded.prefix}.org.jcodings</shadedPattern>
275 <pattern>org.joni</pattern>
276 <shadedPattern>${shaded.prefix}.org.joni</shadedPattern>
279 <pattern>org.mortbay</pattern>
280 <shadedPattern>${shaded.prefix}.org.mortbay</shadedPattern>
283 <pattern>org.nustaq</pattern>
284 <shadedPattern>${shaded.prefix}.org.nustaq</shadedPattern>
287 <pattern>org.terracotta</pattern>
288 <shadedPattern>${shaded.prefix}.org.terracotta</shadedPattern>
291 <pattern>org.tukaani</pattern>
292 <shadedPattern>${shaded.prefix}.org.tukaani</shadedPattern>
295 <pattern>org.xerial</pattern>
296 <shadedPattern>${shaded.prefix}.org.xerial</shadedPattern>
299 <pattern>org.znerd</pattern>
300 <shadedPattern>${shaded.prefix}.org.znerd</shadedPattern>
303 <pattern>org.aopalliance</pattern>
304 <shadedPattern>${shaded.prefix}.org.aopalliance</shadedPattern>
307 <pattern>org.fusesource</pattern>
308 <shadedPattern>${shaded.prefix}.org.fusesource</shadedPattern>
311 <pattern>org.iq80</pattern>
312 <shadedPattern>${shaded.prefix}.org.iq80</shadedPattern>
315 <pattern>org.jamon</pattern>
316 <shadedPattern>${shaded.prefix}.org.jamon</shadedPattern>
319 <pattern>org.jets3t</pattern>
320 <shadedPattern>${shaded.prefix}.org.jets3t</shadedPattern>
322 <!-- poorly named add-on package from jets3t dependency. TODO can we just exclude these? -->
324 <pattern>contribs.mx</pattern>
325 <shadedPattern>${shaded.prefix}.contribs.mx</shadedPattern>
328 <pattern>org.objectweb</pattern>
329 <shadedPattern>${shaded.prefix}.org.objectweb</shadedPattern>
331 <!-- org.apache relocations not in org.apache.hadoop or org.apache.commons -->
333 <pattern>org.apache.avro</pattern>
334 <shadedPattern>${shaded.prefix}.org.apache.avro</shadedPattern>
337 <pattern>org.apache.curator</pattern>
338 <shadedPattern>${shaded.prefix}.org.apache.curator</shadedPattern>
341 <pattern>org.apache.directory</pattern>
342 <shadedPattern>${shaded.prefix}.org.apache.directory</shadedPattern>
345 <pattern>org.apache.http</pattern>
346 <shadedPattern>${shaded.prefix}.org.apache.http</shadedPattern>
349 <pattern>org.apache.jasper</pattern>
350 <shadedPattern>${shaded.prefix}.org.apache.jasper</shadedPattern>
353 <pattern>org.apache.jute</pattern>
354 <shadedPattern>${shaded.prefix}.org.apache.jute</shadedPattern>
357 <pattern>org.apache.kerby</pattern>
358 <shadedPattern>${shaded.prefix}.org.apache.kerby</shadedPattern>
361 <pattern>org.apache.taglibs</pattern>
362 <shadedPattern>${shaded.prefix}.org.apache.taglibs</shadedPattern>
365 <pattern>org.apache.zookeeper</pattern>
366 <shadedPattern>${shaded.prefix}.org.apache.zookeeper</shadedPattern>
368 <!-- org.apache.commons not including logging -->
370 <pattern>org.apache.commons.validator</pattern>
371 <shadedPattern>${shaded.prefix}.org.apache.commons.validator</shadedPattern>
374 <pattern>org.apache.commons.beanutils</pattern>
375 <shadedPattern>${shaded.prefix}.org.apache.commons.beanutils</shadedPattern>
378 <pattern>org.apache.commons.cli</pattern>
379 <shadedPattern>${shaded.prefix}.org.apache.commons.cli</shadedPattern>
382 <pattern>org.apache.commons.collections</pattern>
383 <shadedPattern>${shaded.prefix}.org.apache.commons.collections</shadedPattern>
386 <pattern>org.apache.commons.configuration</pattern>
387 <shadedPattern>${shaded.prefix}.org.apache.commons.configuration</shadedPattern>
390 <pattern>org.apache.commons.crypto</pattern>
391 <shadedPattern>${shaded.prefix}.org.apache.commons.crypto</shadedPattern>
394 <pattern>org.apache.commons.csv</pattern>
395 <shadedPattern>${shaded.prefix}.org.apache.commons.csv</shadedPattern>
398 <pattern>org.apache.commons.daemon</pattern>
399 <shadedPattern>${shaded.prefix}.org.apache.commons.daemon</shadedPattern>
402 <pattern>org.apache.commons.io</pattern>
403 <shadedPattern>${shaded.prefix}.org.apache.commons.io</shadedPattern>
406 <pattern>org.apache.commons.math</pattern>
407 <shadedPattern>${shaded.prefix}.org.apache.commons.math</shadedPattern>
410 <pattern>org.apache.commons.math3</pattern>
411 <shadedPattern>${shaded.prefix}.org.apache.commons.math3</shadedPattern>
414 <pattern>org.apache.commons.net</pattern>
415 <shadedPattern>${shaded.prefix}.org.apache.commons.net</shadedPattern>
418 <pattern>org.apache.commons.lang</pattern>
419 <shadedPattern>${shaded.prefix}.org.apache.commons.lang</shadedPattern>
422 <pattern>org.apache.commons.lang3</pattern>
423 <shadedPattern>${shaded.prefix}.org.apache.commons.lang3</shadedPattern>
426 <pattern>org.apache.commons.el</pattern>
427 <shadedPattern>${shaded.prefix}.org.apache.commons.el</shadedPattern>
430 <pattern>org.apache.commons.httpclient</pattern>
431 <shadedPattern>${shaded.prefix}.org.apache.commons.httpclient</shadedPattern>
434 <pattern>org.apache.commons.compress</pattern>
435 <shadedPattern>${shaded.prefix}.org.apache.commons.compress</shadedPattern>
438 <pattern>org.apache.commons.digester</pattern>
439 <shadedPattern>${shaded.prefix}.org.apache.commons.digester</shadedPattern>
442 <pattern>org.apache.commons.codec</pattern>
443 <shadedPattern>${shaded.prefix}.org.apache.commons.codec</shadedPattern>
446 <pattern>org.apache.commons.text</pattern>
447 <shadedPattern>${shaded.prefix}.org.apache.commons.text</shadedPattern>
449 <!-- top level net-->
451 <pattern>net/</pattern>
452 <shadedPattern>${shaded.prefix}.net.</shadedPattern>
456 <!-- Need to filter out some extraneous license files.
457 Don't use the ApacheLicenseRT because it just removes all
458 META-INF/LICENSE(.txt)? files, including ours. -->
460 implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
462 <resource>LICENSE.txt</resource>
463 <resource>ASL2.0</resource>
464 <!-- also this unneeded doc -->
465 <resource>overview.html</resource>
468 <!-- Where notices exist, just concat them -->
470 implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
471 <addHeader>false</addHeader>
472 <projectName>${project.name}</projectName>
475 implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer">
479 <!-- remove utility classes which are not required from dnsjava -->
481 <artifact>dnsjava:dnsjava</artifact>
483 <exclude>dig*</exclude>
484 <exclude>jnamed*</exclude>
485 <exclude>lookup*</exclude>
486 <exclude>update*</exclude>
490 <!-- this is a signed osgi bundle -->
491 <artifact>org.eclipse.jetty.orbit:javax.servlet.jsp.jstl</artifact>
493 <exclude>META-INF/ECLIPSEF.SF</exclude>
494 <exclude>META-INF/ECLIPSEF.RSA</exclude>
498 <!-- Duplication of classes that ship in commons-collections 2.x and 3.x
499 If we stop bundling a relevant commons-collections artifact we'll
500 need to revisit. See: https://s.apache.org/e09o
502 <artifact>commons-beanutils:commons-beanutils-core</artifact>
504 <exclude>org/apache/commons/collections/*.class</exclude>
508 <!-- server side webapps that we don't need -->
509 <artifact>org.apache.hadoop:hadoop-yarn-common</artifact>
511 <exclude>webapps/*</exclude>
512 <exclude>webapps/**/*</exclude>
516 <artifact>*:*</artifact>
518 <!-- proto source files aren't needed -->
519 <exclude>*.proto</exclude>
520 <exclude>**/*.proto</exclude>
521 <!-- We already concat NOTICE, safe to drop individual ones -->
522 <exclude>LICENSE</exclude>
523 <exclude>NOTICE</exclude>
524 <!-- Remove the shaded guava added in hadoop-3.3.1+-->
525 <exclude>org/apache/hadoop/thirdparty/**/*</exclude>
529 <!-- skip french localization -->
530 <artifact>org.apache.commons:commons-math3</artifact>
532 <exclude>assets/org/apache/commons/math3/**/*</exclude>
536 <!-- appears to be the result of a conflict in hadoop artifacts -->
537 <artifact>org.apache.hadoop:*</artifact>
539 <exclude>mapred-default.xml.orig</exclude>
542 <!-- unnecessary files that mess up our invariants check -->
544 <artifact>org.eclipse.jetty:*</artifact>
546 <exclude>about.html</exclude>
547 <exclude>jetty-dir.css</exclude>
551 <artifact>org.apache.kerby:*</artifact>
553 <exclude>krb5-template.conf</exclude>
554 <exclude>krb5_udp-template.conf</exclude>
555 <exclude>ccache.txt</exclude>
556 <exclude>keytab.txt</exclude>