<?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.flink</groupId>
		<artifactId>flink-parent</artifactId>
		<version>1.10-SNAPSHOT</version>
		<relativePath>..</relativePath>
	</parent>

	<artifactId>flink-kubernetes_${scala.binary.version}</artifactId>
	<name>flink-kubernetes</name>
	<packaging>jar</packaging>

	<properties>
		<kubernetes.client.version>4.9.2</kubernetes.client.version>
	</properties>

	<!-- Set dependency version for transitive dependencies -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.squareup.okhttp3</groupId>
				<artifactId>okhttp</artifactId>
				<version>3.12.1</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>

		<!-- core dependencies  -->

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-clients_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-runtime_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>io.fabric8</groupId>
			<artifactId>kubernetes-client</artifactId>
			<version>${kubernetes.client.version}</version>
		</dependency>

		<!-- test dependencies -->
		<dependency>
			<groupId>io.fabric8</groupId>
			<artifactId>kubernetes-server-mock</artifactId>
			<version>${kubernetes.client.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-runtime_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-clients_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-test-utils_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
			<scope>test</scope>
		</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 combine.children="append">
							<artifactSet>
								<includes combine.children="append">
									<include>io.fabric8:kubernetes-client</include>
									<include>io.fabric8:kubernetes-model</include>
									<include>io.fabric8:kubernetes-model-common</include>

									<!-- Shade all the dependencies of kubernetes client  -->
									<include>com.fasterxml.jackson.core:jackson-core</include>
									<include>com.fasterxml.jackson.core:jackson-annotations</include>
									<include>com.fasterxml.jackson.core:jackson-databind</include>
									<include>com.fasterxml.jackson.dataformat:jackson-dataformat-yaml</include>
									<include>com.fasterxml.jackson.datatype:jackson-datatype-jsr310</include>
									<include>com.squareup.okhttp3:*</include>
									<include>com.squareup.okio:okio</include>
									<include>org.yaml:*</include>
									<include>dk.brics.automaton:*</include>

									<include>META-INF/services/org.apache.flink.*</include>
								</includes>
							</artifactSet>
							<filters combine.children="append">
								<filter>
									<artifact>*:*</artifact>
									<excludes>
										<exclude>*.aut</exclude>
										<exclude>META-INF/maven/**</exclude>
										<exclude>META-INF/services/*com.fasterxml*</exclude>
										<exclude>META-INF/proguard/**</exclude>
										<exclude>OSGI-INF/**</exclude>
										<exclude>schema/**</exclude>
										<exclude>*.vm</exclude>
										<exclude>*.properties</exclude>
										<exclude>*.xml</exclude>
										<exclude>META-INF/jandex.idx</exclude>
										<exclude>license.header</exclude>
									</excludes>
								</filter>
							</filters>
							<relocations>
								<relocation>
									<pattern>com.fasterxml.jackson</pattern>
									<shadedPattern>org.apache.flink.kubernetes.shadded.com.fasterxml.jackson</shadedPattern>
								</relocation>
								<relocation>
									<pattern>okhttp3</pattern>
									<shadedPattern>org.apache.flink.kubernetes.shadded.okhttp3</shadedPattern>
								</relocation>
								<relocation>
									<pattern>okio</pattern>
									<shadedPattern>org.apache.flink.kubernetes.shadded.okio</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.yaml</pattern>
									<shadedPattern>org.apache.flink.kubernetes.shadded.org.yaml</shadedPattern>
								</relocation>
								<relocation>
									<pattern>dk.brics.automaton</pattern>
									<shadedPattern>org.apache.flink.kubernetes.shadded.dk.brics.automaton</shadedPattern>
								</relocation>
							</relocations>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
