<?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-end-to-end-tests</artifactId>
		<groupId>org.apache.flink</groupId>
		<version>1.12.5</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>

	<artifactId>flink-end-to-end-tests-common-kafka</artifactId>
	<name>Flink : E2E Tests : Common Kafka</name>

	<repositories>
		<repository>
			<id>confluent</id>
			<url>https://packages.confluent.io/maven/</url>
		</repository>
	</repositories>

	<dependencies>
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-end-to-end-tests-common</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-test-utils-junit</artifactId>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-streaming-kafka-test_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
			<!-- ensure the test jars are built beforehand -->
			<scope>provided</scope>
			<exclusions>
				<exclusion>
					<!-- For dependency convergence; conflicting dependencies are not loaded at the same time -->
					<groupId>org.apache.flink</groupId>
					<artifactId>flink-connector-kafka-_${scala.binary.version}</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.apache.kafka</groupId>
			<artifactId>kafka-clients</artifactId>
			<version>2.4.1</version>
		</dependency>

		<!-- The following dependencies are for connector/format sql-jars that
			we copy using the maven-dependency-plugin. When extending the test
 			to cover more connectors/formats, add a dependency here and an entry
			to the dependency-plugin configuration below.
			This ensures that all modules we actually need (as defined by the
 			dependency-plugin configuration) are built before this module. -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-sql-client-test</artifactId>
			<version>${project.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<!-- Used by maven-dependency-plugin -->
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-sql-avro</artifactId>
			<version>${project.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<!-- Used by maven-dependency-plugin -->
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-sql-avro-confluent-registry</artifactId>
			<version>${project.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>kafka</artifactId>
			<version>1.15.1</version>
		</dependency>

		<dependency>
			<!-- https://mvnrepository.com/artifact/io.confluent/kafka-avro-serializer -->
			<groupId>io.confluent</groupId>
			<artifactId>kafka-avro-serializer</artifactId>
			<version>5.5.2</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>io.confluent</groupId>
			<artifactId>kafka-schema-registry-client</artifactId>
			<version>5.5.2</version>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.apache.kafka</groupId>
					<artifactId>kafka-clients</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.apache.avro</groupId>
			<artifactId>avro</artifactId>
			<version>1.10.0</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<id>copy</id>
						<phase>pre-integration-test</phase>
						<goals>
							<goal>copy</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<artifactItems>
						<artifactItem>
							<groupId>org.apache.flink</groupId>
							<artifactId>flink-streaming-kafka-test_${scala.binary.version}</artifactId>
							<version>${project.version}</version>
							<type>jar</type>
							<overWrite>true</overWrite>
							<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
						</artifactItem>

						<artifactItem>
							<groupId>org.apache.flink</groupId>
							<artifactId>flink-sql-client-test</artifactId>
							<version>${project.version}</version>
							<destFileName>SqlToolbox.jar</destFileName>
							<type>jar</type>
							<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
						</artifactItem>
						<artifactItem>
							<groupId>org.apache.flink</groupId>
							<artifactId>flink-sql-avro</artifactId>
							<version>${project.version}</version>
							<destFileName>avro.jar</destFileName>
							<type>jar</type>
							<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
						</artifactItem>
						<artifactItem>
							<groupId>org.apache.flink</groupId>
							<artifactId>flink-sql-avro-confluent-registry</artifactId>
							<version>${project.version}</version>
							<destFileName>avro-confluent.jar</destFileName>
							<type>jar</type>
							<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
						</artifactItem>
						<artifactItem>
							<groupId>org.apache.flink</groupId>
							<artifactId>flink-sql-connector-kafka_${scala.binary.version}</artifactId>
							<version>${project.version}</version>
							<destFileName>sql-kafka.jar</destFileName>
							<type>jar</type>
							<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
						</artifactItem>
					</artifactItems>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
