<?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">
	<parent>
		<artifactId>flink-connectors</artifactId>
		<groupId>org.apache.flink</groupId>
		<version>1.15-SNAPSHOT</version>
		<relativePath>..</relativePath>
	</parent>
	<modelVersion>4.0.0</modelVersion>

	<artifactId>flink-sql-connector-aws-kinesis-streams</artifactId>
	<name>Flink : Connectors : SQL : Amazon Kinesis Data Streams</name>

	<properties>
		<japicmp.skip>true</japicmp.skip>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-connector-aws-kinesis-streams</artifactId>
			<version>${project.version}</version>
		</dependency>
	</dependencies>


	<build>
		<plugins>
			<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>
							<artifactSet>
								<includes>
									<include>org.apache.flink:flink-connector-base</include>
									<include>org.apache.flink:flink-connector-aws-base</include>
									<include>org.apache.flink:flink-connector-aws-kinesis-streams</include>
									<include>software.amazon.awssdk:*</include>
									<include>org.reactivestreams:*</include>
									<include>com.typesafe.netty:*</include>
									<include>org.apache.httpcomponents:*</include>
									<include>io.netty:*</include>
									<include>commons-logging:commons-logging</include>
								</includes>
							</artifactSet>
							<relocations>
								<relocation>
									<pattern>software.amazon</pattern>
									<shadedPattern>org.apache.flink.connector.kinesis.sink.shaded.software.amazon</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.reactivestreams</pattern>
									<shadedPattern>org.apache.flink.connector.kinesis.sink.shaded.org.reactivestreams</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.typesafe.netty</pattern>
									<shadedPattern>org.apache.flink.connector.kinesis.sink.shaded.com.typesafe.netty</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.http</pattern>
									<shadedPattern>org.apache.flink.connector.kinesis.sink.shaded.org.apache.http</shadedPattern>
								</relocation>
								<relocation>
									<pattern>io.netty</pattern>
									<shadedPattern>org.apache.flink.connector.kinesis.sink.shaded.io.netty</shadedPattern>
								</relocation>
							</relocations>
							<filters>
							<filter>
								<artifact>org.apache.flink:flink-connector-aws-kinesis-streams:*</artifact>
								<excludes>
									<exclude>profile</exclude>
								</excludes>
							</filter>
							<filter>
								<artifact>org.apache.flink:flink-connector-aws-base:*</artifact>
								<excludes>
									<exclude>profile</exclude>
								</excludes>
							</filter>
						</filters>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
