<?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.14.2</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>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter</artifactId>
			<scope>compile</scope>
		</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>
		</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>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-connector-testing_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-connector-kafka_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
			<type>test-jar</type>
		</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>
						<artifactItem>
							<groupId>org.apache.flink</groupId>
							<artifactId>flink-connector-kafka_${scala.binary.version}</artifactId>
							<version>${project.version}</version>
							<destFileName>kafka-connector.jar</destFileName>
							<type>jar</type>
							<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
						</artifactItem>
						<artifactItem>
							<groupId>org.apache.kafka</groupId>
							<artifactId>kafka-clients</artifactId>
							<version>2.4.1</version>
							<destFileName>kafka-clients.jar</destFileName>
							<type>jar</type>
							<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
						</artifactItem>
					</artifactItems>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
