<?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/maven-v4_0_0.xsd">

	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.flink</groupId>
		<artifactId>flink-parent</artifactId>
		<version>1.13.1</version>
		<relativePath>..</relativePath>
	</parent>

	<artifactId>flink-core</artifactId>
	<name>Flink : Core</name>

	<packaging>jar</packaging>

	<dependencies>
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-annotations</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-metrics-core</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-shaded-asm-7</artifactId>
		</dependency>

		<!-- standard utilities -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<!-- managed version -->
		</dependency>

		<!-- for the fallback generic serializer -->
		<dependency>
			<groupId>com.esotericsoftware.kryo</groupId>
			<artifactId>kryo</artifactId>
			<!-- managed version -->
		</dependency>

		<!-- The common collections are needed for some hash tables used in the collection execution -->
		<dependency>
			<groupId>commons-collections</groupId>
			<artifactId>commons-collections</artifactId>
			<!-- managed version -->
		</dependency>

		<!-- Commons compression, for additional decompressors -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-compress</artifactId>
			<!-- managed version -->
		</dependency>
		<dependency>
			<groupId>com.github.luben</groupId>
			<artifactId>zstd-jni</artifactId>
			<version>1.4.9-1</version>
			<scope>test</scope>
		</dependency>


		<!-- Ratelimiting dependencies -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-shaded-guava</artifactId>
		</dependency>

		<!-- ================== test dependencies ================== -->

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-test-utils-junit</artifactId>
		</dependency>

		<!-- Joda, jackson, and lombok are used to test that serialization and type extraction
			work with types from those libraries -->

		<dependency>
			<groupId>joda-time</groupId>
			<artifactId>joda-time</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.joda</groupId>
			<artifactId>joda-convert</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-shaded-jackson</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.22</version>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>

				<configuration>
					<suppressionsLocation combine.self="override">/tools/maven/suppressions-core.xml</suppressionsLocation>
				</configuration>
			</plugin>

			<!-- activate API compatibility checks -->
			<plugin>
				<groupId>com.github.siom79.japicmp</groupId>
				<artifactId>japicmp-maven-plugin</artifactId>
				<configuration>
					<parameter>
						<excludes combine.children="append">
							<exclude>org.apache.flink.api.common.ExecutionConfig#CONFIG_KEY</exclude>
							<exclude>org.apache.flink.core.fs.FileSystem\$FSKey</exclude>
							<exclude>org.apache.flink.core.fs.FileSystem#initialize(java.net.URI)</exclude>
							<exclude>org.apache.flink.core.fs.FileSystem#isFlinkSupportedScheme(java.lang.String)</exclude>
							<exclude>org.apache.flink.core.fs.FileSystem#setDefaultScheme(org.apache.flink.configuration.Configuration)</exclude>
							<exclude>org.apache.flink.api.java.typeutils.WritableTypeInfo</exclude>
							<exclude>org.apache.flink.api.java.typeutils.AvroTypeInfo</exclude>
							<!-- Breaking changes between 1.1 and 1.2.
							We ignore these changes because these are low-level, internal runtime configuration parameters -->
							<exclude>org.apache.flink.configuration.ConfigConstants#DEFAULT_NETWORK_REQUEST_BACKOFF_INITIAL</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants#DEFAULT_NETWORK_REQUEST_BACKOFF_MAX</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants#DEFAULT_TASK_CANCELLATION_TIMEOUT_MILLIS</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants#ENABLE_QUARANTINE_MONITOR</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants#NETWORK_REQUEST_BACKOFF_INITIAL_KEY</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants#NETWORK_REQUEST_BACKOFF_MAX_KEY</exclude>

							<!-- fields that were accidentally not final in the beginning -->
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_WATCH_THRESHOLD</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_DISPATCHER_THROUGHPUT</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_SECURITY_SSL_VERIFY_HOSTNAME</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_LOOKUP_TIMEOUT</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_TRANSPORT_HEARTBEAT_INTERVAL</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_RECOVERY_MODE</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_SECURITY_SSL_ENABLED</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_CLIENT_TIMEOUT</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_STATE_BACKEND</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_ASK_TIMEOUT</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_TRANSPORT_THRESHOLD</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_FRAMESIZE</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_SECURITY_SSL_PROTOCOL</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_LOG_LIFECYCLE_EVENTS</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_SECURITY_SSL_ALGORITHMS</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_TRANSPORT_HEARTBEAT_PAUSE</exclude>
							<exclude>org.apache.flink.configuration.ConfigConstants.DEFAULT_AKKA_SSL_ENABLED</exclude>

							<!-- apparently there is a bug in the plugin which makes it fail on this new file, event though
								its new, and not conflicting/breaking -->
							<exclude>org.apache.flink.api.common.serialization.DeserializationSchema</exclude>
							<exclude>org.apache.flink.api.common.serialization.SerializationSchema</exclude>

							<!-- leaked constructor in TypeHint -->
							<exclude>org.apache.flink.api.common.typeinfo.TypeHint</exclude>
							<exclude>org.apache.flink.api.java.typeutils.TypeInfoParser</exclude>

							<!-- removed in 1.12, before that the settings were ineffective anyway -->
							<exclude>org.apache.flink.api.common.ExecutionConfig#disableSysoutLogging()</exclude>
							<exclude>org.apache.flink.api.common.ExecutionConfig#enableSysoutLogging()</exclude>
							<exclude>org.apache.flink.api.common.ExecutionConfig#isSysoutLoggingEnabled()</exclude>

							<!-- it was decided to remove the fold opperations in 1.12 -->
							<exclude>org.apache.flink.api.common.functions.FoldFunction</exclude>
							<exclude>org.apache.flink.api.common.functions.RichFoldFunction</exclude>

							<!-- added method to interface in 1.13 -->
							<exclude>org.apache.flink.api.common.functions.RuntimeContext#getJobId()</exclude>
						</excludes>
					</parameter>
				</configuration>
			</plugin>

			<!-- publish some test base classes -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>test-jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>

	</build>

</project>
