<?xml version="1.0"?>
<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>
	<name>Presto Phoenix Shaded</name>
	<description>a parent pom of apache phoenix shaded for presto.</description>

	<groupId>com.github.combineads</groupId>
	<artifactId>presto-phoenix-shaded</artifactId>
	<version>1.0-cdh5.11.2</version>
	<packaging>pom</packaging>

	<url>https://github.com/combineads/presto-phoenix-shaded</url>
	<licenses>
		<license>
			<name>Apache License 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0</url>
			<distribution>repo</distribution>
		</license>
	</licenses>
	<developers>
		<developer>
			<name>Byunghwa Yun</name>
			<email>combine@combineads.co.kr</email>
		</developer>
	</developers>
	<scm>
		<connection>scm:git:git://github.com/combineads/presto-phoenix-shaded.git</connection>
		<developerConnection>scm:git:git://github.com/combineads/presto-phoenix-shaded.git</developerConnection>
		<url>https://github.com/combineads/presto-phoenix-shaded</url>
	</scm>

	<properties>
		<phoenix.version>4.13.1-HBase-1.2</phoenix.version>
		<hbase.version>1.2.5</hbase.version>
		<shaded.package>com.facebook.presto.phoenix.shaded</shaded.package>
	</properties>

	<modules>
		<module>presto-hbase-testing-util-shaded</module>
		<module>presto-phoenix-core-shaded</module>
	</modules>

	<distributionManagement>
		<snapshotRepository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
		<repository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
		</repository>
	</distributionManagement>

	<profiles>
		<profile>
			<id>cdh</id>
			<properties>
				<phoenix.version>4.13.2-cdh5.11.2</phoenix.version>
				<hbase.version>1.2.0-cdh5.11.2</hbase.version>
			</properties>
		</profile>
	</profiles>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-gpg-plugin</artifactId>
				<version>1.5</version>
				<executions>
					<execution>
						<id>sign-artifacts</id>
						<phase>verify</phase>
						<goals>
							<goal>sign</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.sonatype.plugins</groupId>
				<artifactId>nexus-staging-maven-plugin</artifactId>
				<version>1.6.7</version>
				<extensions>true</extensions>
				<configuration>
					<serverId>ossrh</serverId>
					<nexusUrl>https://oss.sonatype.org/</nexusUrl>
					<autoReleaseAfterClose>true</autoReleaseAfterClose>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>3.0.0</version>
				<executions>
					<execution>
						<id>javadoc-jar</id>
						<phase>package</phase>
						<goals>
							<goal>jar</goal>
						</goals>
						<configuration>
							<verbose>true</verbose>
							<includeDependencySources>true</includeDependencySources>
							<additionalOptions>-Xdoclint:none</additionalOptions>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>3.1.1</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<createSourcesJar>true</createSourcesJar>
							<shadedArtifactAttached>false</shadedArtifactAttached>
							<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
							<shadeTestJar>false</shadeTestJar>
							<artifactSet>
								<excludes>
									<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>org.apache.yetus:*</exclude>
									<exclude>log4j:*</exclude>
									<exclude>commons-logging:*</exclude>
									<exclude>org.apache.phoenix:phoenix-client</exclude>
									<exclude>xom:xom</exclude>
									<exclude>com.sun.jersey:jersey-server</exclude>
								</excludes>
							</artifactSet>
							<relocations>
								<!-- top level com not including sun -->
								<relocation>
									<pattern>com.codahale</pattern>
									<shadedPattern>${shaded.package}.com.codahale</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.google</pattern>
									<shadedPattern>${shaded.package}.com.google</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.jcraft</pattern>
									<shadedPattern>${shaded.package}.com.jcraft</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.thoughtworks</pattern>
									<shadedPattern>${shaded.package}.com.thoughtworks</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.jamesmurty</pattern>
									<shadedPattern>${shaded.package}.com.jamesmurty</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.lmax</pattern>
									<shadedPattern>${shaded.package}.com.lmax</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.dropwizard</pattern>
									<shadedPattern>${shaded.package}.com.dropwizard</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.fasterxml</pattern>
									<shadedPattern>${shaded.package}.com.fasterxml</shadedPattern>
								</relocation>

								<!-- top level io -->
								<relocation>
									<pattern>io.netty</pattern>
									<shadedPattern>${shaded.package}.io.netty</shadedPattern>
								</relocation>

								<!-- top level org -->
								<relocation>
									<pattern>org.codehaus</pattern>
									<shadedPattern>${shaded.package}.org.codehaus</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.jcodings</pattern>
									<shadedPattern>${shaded.package}.org.jcodings</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.joni</pattern>
									<shadedPattern>${shaded.package}.org.joni</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.mortbay</pattern>
									<shadedPattern>${shaded.package}.org.mortbay</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.tukaani</pattern>
									<shadedPattern>${shaded.package}.org.tukaani</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.xerial</pattern>
									<shadedPattern>${shaded.package}.org.xerial</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.znerd</pattern>
									<shadedPattern>${shaded.package}.org.znerd</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.aopalliance</pattern>
									<shadedPattern>${shaded.package}.org.aopalliance</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.fusesource</pattern>
									<shadedPattern>${shaded.package}.org.fusesource</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.iq80</pattern>
									<shadedPattern>${shaded.package}.org.iq80</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.jamon</pattern>
									<shadedPattern>${shaded.package}.org.jamon</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.jets3t</pattern>
									<shadedPattern>${shaded.package}.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.package}.contribs.mx</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.objectweb</pattern>
									<shadedPattern>${shaded.package}.org.objectweb</shadedPattern>
								</relocation>


								<!-- org.apache relocations not in org.apache.hadoop or org.apache.commons -->
								<relocation>
									<pattern>org.apache.avro</pattern>
									<shadedPattern>${shaded.package}.org.apache.avro</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.curator</pattern>
									<shadedPattern>${shaded.package}.org.apache.curator</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.directory</pattern>
									<shadedPattern>${shaded.package}.org.apache.directory</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.http</pattern>
									<shadedPattern>${shaded.package}.org.apache.http</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.jute</pattern>
									<shadedPattern>${shaded.package}.org.apache.jute</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.zookeeper</pattern>
									<shadedPattern>${shaded.package}.org.apache.zookeeper</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.jasper</pattern>
									<shadedPattern>${shaded.package}.org.apache.jasper</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.taglibs</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons</shadedPattern>
								</relocation>

								<!-- org.apache.commons not including logging -->
								<relocation>
									<pattern>org.apache.commons.beanutils</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.beanutils</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.cli</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.cli</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.collections</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.collections</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.configuration</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.configuration</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.crypto</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.crypto</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.daemon</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.daemon</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.io</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.io</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.math</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.math</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.math3</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.math3</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.net</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.net</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.lang</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.lang</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.lang3</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.lang3</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.el</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.el</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.httpclient</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.httpclient</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.compress</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.compress</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.digester</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.digester</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.codec</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons.codec</shadedPattern>
								</relocation>

								<!-- top level net -->
								<relocation>
									<pattern>net.iharder</pattern>
									<shadedPattern>${shaded.package}.net.iharder</shadedPattern>
								</relocation>

								<!-- junit -->
								<relocation>
									<pattern>junit</pattern>
									<shadedPattern>${shaded.package}.junit</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.junit</pattern>
									<shadedPattern>${shaded.package}.org.junit</shadedPattern>
								</relocation>

								<!-- Phoenix -->
								<!-- COM relocation -->
								<relocation>
									<pattern>com.yammer</pattern>
									<shadedPattern>${shaded.package}.com.yammer</shadedPattern>
								</relocation>

								<!-- ORG relocations -->
								<relocation>
									<pattern>org.antlr</pattern>
									<shadedPattern>${shaded.package}.org.antlr</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.hamcrest</pattern>
									<shadedPattern>${shaded.package}.org.hamcrest</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.hsqldb</pattern>
									<shadedPattern>${shaded.package}.org.hsqldb</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.jboss</pattern>
									<shadedPattern>${shaded.package}.org.jboss</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.joda</pattern>
									<shadedPattern>${shaded.package}.org.joda</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.kosmix</pattern>
									<shadedPattern>${shaded.package}.org.kosmix</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.stringtemplate</pattern>
									<shadedPattern>${shaded.package}.org.stringtemplate</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons</pattern>
									<shadedPattern>${shaded.package}.org.apache.commons</shadedPattern>
									<excludes>
										<exclude>org.apache.commons.csv.**</exclude>
										<exclude>org.apache.commons.logging.**</exclude>
									</excludes>
								</relocation>
								<relocation>
									<pattern>org.apache.mina</pattern>
									<shadedPattern>${shaded.package}.org.apache.mina</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.oro</pattern>
									<shadedPattern>${shaded.package}.org.apache.oro</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.thrift</pattern>
									<shadedPattern>${shaded.package}.org.apache.thrift</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.tools</pattern>
									<shadedPattern>${shaded.package}.org.apache.tools</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.twill</pattern>
									<shadedPattern>${shaded.package}.org.apache.twill</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.velocity</pattern>
									<shadedPattern>${shaded.package}.org.apache.velocity</shadedPattern>
								</relocation>

								<!-- NET relocations -->
								<relocation>
									<pattern>net</pattern>
									<shadedPattern>${shaded.package}.net</shadedPattern>
								</relocation>

								<!-- Misc relocations -->
								<relocation>
									<pattern>antlr</pattern>
									<shadedPattern>${shaded.package}.antlr</shadedPattern>
								</relocation>
								<relocation>
									<pattern>it.unimi</pattern>
									<shadedPattern>${shaded.package}.it.unimi</shadedPattern>
								</relocation>
								<relocation>
									<pattern>jline</pattern>
									<shadedPattern>${shaded.package}.jline</shadedPattern>
								</relocation>
								<relocation>
									<pattern>javax.ws.rs</pattern>
									<shadedPattern>${shaded.package}.javax.ws.rs</shadedPattern>
								</relocation>
								<relocation>
									<pattern>javax.servlet</pattern>
									<shadedPattern>${shaded.package}.javax.servlet</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>
										<resource>LICENSE-junit.txt</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>
							</transformers>
							<filters>
								<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>
									<!-- server side webapps that we don't need -->
									<artifact>org.apache.hbase:hbase-server</artifact>
									<excludes>
										<exclude>hbase-webapps/*</exclude>
										<exclude>hbase-webapps/**/*</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>
									<!-- proto source files aren't needed -->
									<artifact>*:*</artifact>
									<excludes>
										<exclude>*.proto</exclude>
										<exclude>**/*.proto</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>
								<filter>
									<!-- presto uses javax.ws.rs-api-2.0.1 -->
									<artifact>*:*</artifact>
									<excludes>
										<exclude>META-INF/services/javax.ws.rs.ext.RuntimeDelegate</exclude>
									</excludes>
								</filter>
							</filters>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
