<?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/maven-v4_0_0.xsd">

	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.flink</groupId>
		<artifactId>flink-filesystems</artifactId>
		<version>1.8-SNAPSHOT</version>
		<relativePath>..</relativePath>
	</parent>

	<artifactId>flink-s3-fs-base</artifactId>
	<name>flink-s3-fs-base</name>

	<packaging>jar</packaging>

	<properties>
		<fs.s3.aws.version>1.11.271</fs.s3.aws.version>
	</properties>

	<dependencies>

		<!-- Flink's file system abstraction (only compiled against, not bundled) -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-core</artifactId>
			<version>${project.version}</version>
			<scope>provided</scope>
		</dependency>

		<!-- Hadoop's file system abstraction (bundled) -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-fs-hadoop-shaded</artifactId>
			<version>${project.version}</version>
		</dependency>

		<!-- The Hadoop file system adapter classes (bundled) -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-hadoop-fs</artifactId>
			<version>${project.version}</version>
		</dependency>

		<!-- AWS dependencies (bundled) -->
		<dependency>
			<groupId>com.amazonaws</groupId>
			<artifactId>aws-java-sdk-core</artifactId>
			<version>${fs.s3.aws.version}</version>
		</dependency>
		<dependency>
			<groupId>com.amazonaws</groupId>
			<artifactId>aws-java-sdk-s3</artifactId>
			<version>${fs.s3.aws.version}</version>
		</dependency>
		<dependency>
			<groupId>com.amazonaws</groupId>
			<artifactId>aws-java-sdk-kms</artifactId>
			<version>${fs.s3.aws.version}</version>
		</dependency>
		<dependency>
			<groupId>com.amazonaws</groupId>
			<artifactId>aws-java-sdk-dynamodb</artifactId>
			<version>${fs.s3.aws.version}</version>
		</dependency>

		<!-- Hadoop's s3 support classes (bundled) -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-aws</artifactId>
			<version>${fs.hadoopshaded.version}</version>
			<exclusions>
				<exclusion>
					<groupId>com.amazonaws</groupId>
					<artifactId>aws-java-sdk-bundle</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

	<build>
		<plugins>

			<!-- this is merely an intermediate build artifact and should not be -->
			<!-- deployed to maven central                                       -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>

			<!-- Relocate all S3 related classes -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<executions>
					<execution>
						<id>shade-flink</id>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<shadeTestJar>false</shadeTestJar>
							<artifactSet>
								<includes>
									<include>*:*</include>
								</includes>
							</artifactSet>
							<relocations>
								<!-- shade dependencies internally used by Hadoop and never exposed downstream -->
								<relocation>
									<pattern>org.apache.commons</pattern>
									<shadedPattern>org.apache.flink.fs.shaded.hadoop3.org.apache.commons</shadedPattern>
								</relocation>

								<!-- shade dependencies internally used by AWS and never exposed downstream -->
								<relocation>
									<pattern>software.amazon</pattern>
									<shadedPattern>org.apache.flink.fs.s3base.shaded.software.amazon</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.joda</pattern>
									<shadedPattern>org.apache.flink.fs.s3base.shaded.org.joda</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.http</pattern>
									<shadedPattern>org.apache.flink.fs.s3base.shaded.org.apache.http</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.fasterxml</pattern>
									<shadedPattern>org.apache.flink.fs.s3base.shaded.com.fasterxml</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.google</pattern>
									<shadedPattern>org.apache.flink.fs.s3base.shaded.com.google</shadedPattern>
								</relocation>

								<!-- shade Flink's Hadoop FS adapter classes  -->
								<relocation>
									<pattern>org.apache.flink.runtime.fs.hdfs</pattern>
									<shadedPattern>org.apache.flink.fs.s3.common.hadoop</shadedPattern>
								</relocation>
							</relocations>
							<filters>
								<filter>
									<artifact>org.apache.flink:flink-hadoop-fs</artifact>
									<excludes>
										<exclude>org/apache/flink/runtime/util/**</exclude>
										<exclude>org/apache/flink/runtime/fs/hdfs/HadoopRecoverable*</exclude>
									</excludes>
								</filter>
								<filter>
									<artifact>*</artifact>
									<excludes>
										<exclude>.gitkeep</exclude>
										<exclude>mime.types</exclude>
										<exclude>mozilla/**</exclude>
										<exclude>META-INF/maven/**</exclude>
										<exclude>META-INF/LICENSE.txt</exclude>
									</excludes>
								</filter>
							</filters>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
