blob: 39e816fea02dee989ccf2fe21e9bbf6a5d1fcca0 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix</artifactId>
<version>5.3.0-SNAPSHOT</version>
</parent>
<artifactId>phoenix-server-${hbase.suffix}</artifactId>
<name>Phoenix Server JAR</name>
<description>Phoenix HBase Server Side JAR</description>
<packaging>jar</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>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<!-- RAT gets really confused on the shaded subprojects,
and there is nothing to audit here -->
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<ignoredDependencies>
<ignoredDependency>*</ignoredDependency>
</ignoredDependencies>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/license/*</exclude>
<exclude>META-INF/NOTICE</exclude>
<exclude>LICENSE.*</exclude>
<exclude>NOTICE.*</exclude>
<exclude>NOTICE</exclude>
<exclude>README*</exclude>
</excludes>
</filter>
<filter>
<artifact>org.apache.hadoop:hadoop-yarn-common</artifact>
<excludes>
<exclude>org/apache/hadoop/yarn/factories/package-info.class</exclude>
<exclude>org/apache/hadoop/yarn/util/package-info.class</exclude>
<exclude>org/apache/hadoop/yarn/factory/providers/package-info.class</exclude>
<exclude>org/apache/hadoop/yarn/client/api/impl/package-info.class</exclude>
<exclude>org/apache/hadoop/yarn/client/api/package-info.class</exclude>
<exclude>webapps/**</exclude>
</excludes>
</filter>
<!-- Phoenix specific -->
<filter>
<artifact>org.apache.commons:commons-math3</artifact>
<excludes>
<exclude>assets/**</exclude>
</excludes>
</filter>
<filter>
<artifact>org.apache.hbase:hbase-server</artifact>
<excludes>
<exclude>hbase-webapps/**</exclude>
</excludes>
</filter>
<filter>
<artifact>org.apache.hbase.thirdparty:*</artifact>
<excludes>
<exclude>/**</exclude>
<exclude>webapps/**</exclude>
</excludes>
</filter>
<!-- Phoenix specific -->
</filters>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>csv-bulk-load-config.properties</resource>
<file>
${project.basedir}/../config/csv-bulk-load-config.properties
</file>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>README.md</resource>
<file>${project.basedir}/../README.md</file>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>LICENSE.txt</resource>
<file>${project.basedir}/../LICENSE</file>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>NOTICE</resource>
<file>${project.basedir}/../NOTICE</file>
</transformer>
</transformers>
<relocations>
<relocation>
<pattern>org/</pattern>
<shadedPattern>${shaded.package}.org.</shadedPattern>
<excludes>
<exclude>org/apache/hadoop/**</exclude>
<!-- Our non-shaded htrace and logging libraries -->
<exclude>org/apache/htrace/**</exclude>
<exclude>org/slf4j/**</exclude>
<exclude>org/apache/commons/logging/**</exclude>
<exclude>org/apache/log4j/**</exclude>
<exclude>org/apache/logging/log4j/**</exclude>
<!-- Not the org/ packages that are a part of the jdk -->
<exclude>org/ietf/jgss/**</exclude>
<exclude>org/omg/**</exclude>
<exclude>org/w3c/dom/**</exclude>
<exclude>org/xml/sax/**</exclude>
<!-- Not needed for client, we set this to provided -->
<exclude>org/eclipse/jetty/**</exclude>
<!-- Extras compared to Hadoop -->
<!-- Hbase classes -->
<exclude>org/apache/hbase/**</exclude>
<!-- Phoenix classes -->
<exclude>org/apache/phoenix/**</exclude>
<!-- We are assuming that the Omid coprocessors are not added separately -->
<exclude>org/apache/omid/**</exclude>
<!-- See PHOENIX-7118
We expect this to come from the unshaded hadoop on the classpath.
That is always true for the HBase server classpath -->
<exclude>org/apache/commons/configuration2/**</exclude>
</excludes>
</relocation>
<!-- We use the relocate-by default settings from -client, instead of relocating
one-by-one as in phoenix-mapreduce, because we have unshaded protobuf 2.5.0 on the
classpath, and don't need special handling for it -->
<relocation>
<pattern>com/</pattern>
<shadedPattern>${shaded.package}.com.</shadedPattern>
<excludes>
<!-- Not the com/ packages that are a part of particular jdk implementations -->
<exclude>com/sun/tools/**</exclude>
<exclude>com/sun/javadoc/**</exclude>
<exclude>com/sun/security/**</exclude>
<exclude>com/sun/jndi/**</exclude>
<exclude>com/sun/management/**</exclude>
<exclude>com/sun/management/**</exclude>
<!-- Protobuf 2.5.0 is already on the HBase server classpath -->
<groupId>com/google/protobuf/**</groupId>
</excludes>
</relocation>
<relocation>
<pattern>io/</pattern>
<shadedPattern>${shaded.package}.io.</shadedPattern>
<excludes>
<!-- Exclude config keys for Hadoop that look like package names -->
<exclude>io/compression/**</exclude>
<exclude>io/mapfile/**</exclude>
<exclude>io/map/index/*</exclude>
<exclude>io/seqfile/**</exclude>
<exclude>io/file/buffer/size</exclude>
<exclude>io/skip/checksum/errors</exclude>
<exclude>io/sort/*</exclude>
<exclude>io/serializations</exclude>
</excludes>
</relocation>
<!-- JSRs that haven't made it to inclusion in J2SE -->
<relocation>
<pattern>javax/el/</pattern>
<shadedPattern>${shaded.package}.javax.el.</shadedPattern>
</relocation>
<relocation>
<pattern>javax/cache/</pattern>
<shadedPattern>${shaded.package}.javax.cache.</shadedPattern>
</relocation>
<relocation>
<pattern>javax/servlet/jsp/</pattern>
<shadedPattern>${shaded.package}.javax.servlet.jsp.</shadedPattern>
</relocation>
<relocation>
<pattern>javax/ws/</pattern>
<shadedPattern>${shaded.package}.javax.ws.</shadedPattern>
</relocation>
<relocation>
<pattern>javax/annotation/</pattern>
<shadedPattern>${shaded.package}.javax.annotation.</shadedPattern>
</relocation>
<relocation>
<pattern>javax/inject/</pattern>
<shadedPattern>${shaded.package}.javax.inject.</shadedPattern>
</relocation>
<relocation>
<pattern>javax/validation/</pattern>
<shadedPattern>${shaded.package}.javax.validation.</shadedPattern>
</relocation>
<relocation>
<pattern>javax/xml/bind/</pattern>
<shadedPattern>${shaded.package}.javax.xml.bind.</shadedPattern>
</relocation>
<relocation>
<pattern>javax/activation/</pattern>
<shadedPattern>${shaded.package}.javax.activation.</shadedPattern>
</relocation>
<relocation>
<pattern>net/</pattern>
<shadedPattern>${shaded.package}.net.</shadedPattern>
<excludes>
<!-- Exclude config keys for Hadoop that look like package names -->
<exclude>net/topology/**</exclude>
</excludes>
</relocation>
<!-- okio declares a top level package instead of nested -->
<relocation>
<pattern>okio/</pattern>
<shadedPattern>${shaded.package}.okio.</shadedPattern>
</relocation>
<!-- Phoenix specific relocations -->
<relocation>
<pattern>it/</pattern>
<shadedPattern>${shaded.package}.it.</shadedPattern>
</relocation>
<relocation>
<pattern>javassist/</pattern>
<shadedPattern>${shaded.package}.javassist.</shadedPattern>
</relocation>
<relocation>
<pattern>jersey/</pattern>
<shadedPattern>${shaded.package}.jersey.</shadedPattern>
</relocation>
<relocation>
<pattern>jline/</pattern>
<shadedPattern>${shaded.package}.jline.</shadedPattern>
</relocation>
<relocation>
<pattern>mozilla/</pattern>
<shadedPattern>${shaded.package}.mozilla.</shadedPattern>
</relocation>
<relocation>
<pattern>tables/</pattern>
<shadedPattern>${shaded.package}.tables.</shadedPattern>
</relocation>
<!-- Phoenix specific relocations end -->
</relocations>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<id>server-shaded</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
<shadeTestJar>false</shadeTestJar>
<createSourcesJar>${shadeSources}</createSourcesJar>
<dependencyReducedPomLocation>${basedir}/target/pom.xml</dependencyReducedPomLocation>
<artifactSet>
<includes>
<include>*:*</include>
</includes>
<excludes>
<exclude>org.apache.phoenix:phoenix-client</exclude>
<exclude>xom:xom</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<!-- These must not be moved to a parent module, see PHOENIX-6377 -->
<!-- Depend on all other internal projects -->
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core-server</artifactId>
<exclusions>
<!-- 5.2 no longer uses reload4j, but we still exclude in case something pulls these
transitively -->
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
</exclusion>
<exclusion>
<groupId>ch.qos.reload4j</groupId>
<artifactId>reload4j</artifactId>
</exclusion>
<!-- These are coming from transitive dependencies -->
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-hbase-compat-${hbase.compat.version}</artifactId>
<optional>false</optional>
</dependency>
<!-- Exclude servlet and Jetty. We don't need it, and it causes problems with minicluster -->
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<scope>provided</scope>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>provided</scope>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util-ajax</artifactId>
<scope>provided</scope>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<scope>provided</scope>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<scope>provided</scope>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
<version>${javax.servlet-api.version}</version>
</dependency>
<!-- Mark every Hadoop jar as provided -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-annotations</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-auth</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs-client</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-distcp</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-jobclient</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-common</artifactId>
<scope>provided</scope>
</dependency>
<!-- Mark HBase as provided, too -->
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-mapreduce</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-replication</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-endpoint</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-metrics-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-metrics</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-protocol</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-protocol-shaded</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-hadoop-compat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-hadoop2-compat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-zookeeper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase.thirdparty</groupId>
<artifactId>hbase-shaded-netty</artifactId>
<!-- random version, for exclusion only -->
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase.thirdparty</groupId>
<artifactId>hbase-shaded-miscellaneous</artifactId>
<!-- random version, for exclusion only -->
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase.thirdparty</groupId>
<artifactId>hbase-shaded-protobuf</artifactId>
<!-- random version, for exclusion only -->
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<!-- provided by Hadoop -->
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<!-- random version, for exclusion only -->
<version>2.10.1</version>
<scope>provided</scope>
</dependency>
<!-- Other dependencies we don't want to shade in, but are not transitively excluded by the
above for some reason -->
<dependency>
<!-- HBase-shaded already provides this -->
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<!-- random version, for exclusion only -->
<version>11.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.stephenc.findbugs</groupId>
<artifactId>findbugs-annotations</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>