<?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.4</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>
