<?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-table</artifactId>
		<version>1.12.5</version>
		<relativePath>..</relativePath>
	</parent>

	<artifactId>flink-table-planner-blink_${scala.binary.version}</artifactId>
	<name>Flink : Table : Planner Blink</name>
	<description>
		This module bridges Table/SQL API and runtime. It contains
		all resources that are required during pre-flight and runtime
		phase. The content of this module is work-in-progress. It will
		replace flink-table-planner once it is stable. See FLINK-11439
		and FLIP-32 for more details.
	</description>

	<packaging>jar</packaging>

	<dependencies>
		<!-- Mainly used for calcite-core, it would be relocated
		     to org.apache.flink.calcite.shaded by the shade plugin -->
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
		</dependency>
		<dependency>
			<groupId>org.codehaus.janino</groupId>
			<artifactId>commons-compiler</artifactId>
		</dependency>
		<!-- Used for code generation -->
		<dependency>
			<groupId>org.codehaus.janino</groupId>
			<artifactId>janino</artifactId>
		</dependency>

		<!-- core dependencies -->

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

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-table-api-java</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-table-api-scala_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-table-api-java-bridge_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-table-api-scala-bridge_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-sql-parser</artifactId>
			<version>${project.version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.apache.calcite</groupId>
					<artifactId>calcite-core</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-sql-parser-hive</artifactId>
			<version>${project.version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.apache.calcite</groupId>
					<artifactId>calcite-core</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-table-runtime-blink_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
		</dependency>

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

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

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

		<!-- Used for translation of table programs -->
		<dependency>
			<groupId>org.apache.calcite</groupId>
			<artifactId>calcite-core</artifactId>
			<!-- When updating the Calcite version, make sure to update the dependency exclusions -->
			<version>${calcite.version}</version>
			<exclusions>
				<!--
				"mvn dependency:tree" as of Calcite 1.26.0:

				[INFO] +- org.apache.calcite:calcite-core:jar:1.26.0:compile
				[INFO] |  +- org.apache.calcite:calcite-linq4j:jar:1.26.0:compile
				[INFO] |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.5:compile
				[INFO] |  +- org.apiguardian:apiguardian-api:jar:1.1.0:compile
				[INFO] |  +- com.esri.geometry:esri-geometry-api:jar:2.2.0:runtime
				[INFO] |  +- com.fasterxml.jackson.core:jackson-core:jar:2.10.5:runtime
				[INFO] |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.10.5.1:runtime
				[INFO] |  +- com.jayway.jsonpath:json-path:jar:2.4.0:runtime
				[INFO] |  |  \- net.minidev:json-smart:jar:2.3:runtime
				[INFO] |  |     \- net.minidev:accessors-smart:jar:1.2:runtime
				[INFO] |  |        \- org.ow2.asm:asm:jar:5.0.4:runtime
				[INFO] |  +- commons-codec:commons-codec:jar:1.10:runtime
				[INFO] |  +- org.apache.commons:commons-lang3:jar:3.3.2:compile
				[INFO] |  \- commons-io:commons-io:jar:2.4:compile

				Dependencies that are not needed for how we use Calcite right now.
				-->
				<exclusion>
					<groupId>org.apache.calcite.avatica</groupId>
					<artifactId>avatica-server</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.calcite.avatica</groupId>
					<artifactId>avatica-metrics</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.google.protobuf</groupId>
					<artifactId>protobuf-java</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.google.uzaygezen</groupId>
					<artifactId>uzaygezen-core</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpclient</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpcore</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.commons</groupId>
					<artifactId>commons-dbcp2</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.fasterxml.jackson.dataformat</groupId>
					<artifactId>jackson-dataformat-yaml</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.yahoo.datasketches</groupId>
					<artifactId>sketches-core</artifactId>
				</exclusion>
				<exclusion>
					<groupId>net.hydromatic</groupId>
					<artifactId>aggdesigner-algorithm</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!-- Tools to unify display format for different languages -->
		<dependency>
			<groupId>com.ibm.icu</groupId>
			<artifactId>icu4j</artifactId>
			<version>67.1</version>
		</dependency>

		<!-- test dependencies -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-test-utils_${scala.binary.version}</artifactId>
			<version>${project.version}</version>
			<scope>test</scope>
		</dependency>

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

		<!-- SuccessException used in TestValuesTableFactory -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-tests</artifactId>
			<version>${project.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-table-api-java</artifactId>
			<version>${project.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>

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

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

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

		<dependency>
			<groupId>org.reflections</groupId>
			<artifactId>reflections</artifactId>
			<version>0.9.10</version>
			<exclusions>
				<exclusion>
					<groupId>com.google.code.findbugs</groupId>
					<artifactId>annotations</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.google.guava</groupId>
					<artifactId>guava</artifactId>
				</exclusion>
			</exclusions>
			<scope>compile</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<!-- Scala Compiler -->
			<plugin>
				<groupId>net.alchim31.maven</groupId>
				<artifactId>scala-maven-plugin</artifactId>
				<executions>
					<!-- Run scala compiler in the process-resources phase, so that dependencies on
						scala classes can be resolved later in the (Java) compile phase -->
					<execution>
						<id>scala-compile-first</id>
						<phase>process-resources</phase>
						<goals>
							<goal>add-source</goal>
							<goal>compile</goal>
						</goals>
					</execution>

					<!-- Run scala compiler in the process-test-resources phase, so that dependencies on
						 scala classes can be resolved later in the (Java) test-compile phase -->
					<execution>
						<id>scala-test-compile</id>
						<phase>process-test-resources</phase>
						<goals>
							<goal>testCompile</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<executions>
					<execution>
						<id>shade-flink</id>
						<configuration>
							<shadeTestJar>false</shadeTestJar>
							<filters>
								<filter>
									<artifact>*:*</artifact>
									<excludes>
										<!-- Excluded all these files for a clean flink-table-planner-blink JAR -->
										<exclude>org-apache-calcite-jdbc.properties</exclude>
										<exclude>common.proto</exclude>
										<exclude>requests.proto</exclude>
										<exclude>responses.proto</exclude>
										<exclude>codegen/**</exclude>
										<exclude>META-INF/*.SF</exclude>
										<exclude>META-INF/*.DSA</exclude>
										<exclude>META-INF/*.RSA</exclude>
										<exclude>META-INF/services/java.sql.Driver</exclude>
										<!-- com.ibm.icu:icu4j includes a LICENSE file in its root folder -->
										<exclude>LICENSE</exclude>
									</excludes>
								</filter>
							</filters>
							<artifactSet>
								<includes combine.children="append">
									<include>org.apache.calcite:*</include>
									<include>org.apache.calcite.avatica:*</include>

									<!-- Calcite's dependencies -->
									<include>com.esri.geometry:esri-geometry-api</include>
									<include>com.google.guava:guava</include>
									<include>com.google.guava:failureaccess</include>
									<include>com.jayway.jsonpath:json-path</include>
									<include>com.fasterxml.jackson.core:jackson-core</include>
									<include>com.fasterxml.jackson.core:jackson-databind</include>
									<include>com.fasterxml.jackson.core:jackson-annotations</include>
									<include>commons-codec:commons-codec</include>
									<include>commons-io:commons-io</include>

									<!-- flink-table-planner-blink dependencies -->
									<include>org.apache.flink:flink-sql-parser</include>
									<include>org.apache.flink:flink-sql-parser-hive</include>

									<!-- flink-table-runtime-blink dependencies -->
									<include>org.codehaus.janino:*</include>

									<!-- Tools to unify display format for different languages -->
									<include>com.ibm.icu:icu4j</include>
								</includes>
							</artifactSet>
							<relocations>
								<!-- Calcite is not relocated for now, because we expose it at some locations such as CalciteConfig -->
								<!--<relocation>
									<pattern>org.apache.calcite</pattern>
									<shadedPattern>org.apache.flink.calcite.shaded.org.apache.calcite</shadedPattern>
								</relocation>-->

								<!-- Calcite's dependencies -->
								<relocation>
									<pattern>com.google</pattern>
									<shadedPattern>org.apache.flink.calcite.shaded.com.google</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.jayway</pattern>
									<shadedPattern>org.apache.flink.calcite.shaded.com.jayway</shadedPattern>
								</relocation>
								<relocation>
									<pattern>com.fasterxml</pattern>
									<shadedPattern>org.apache.flink.calcite.shaded.com.fasterxml</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.codec</pattern>
									<shadedPattern>org.apache.flink.calcite.shaded.org.apache.commons.codec</shadedPattern>
								</relocation>
								<relocation>
									<pattern>org.apache.commons.io</pattern>
									<shadedPattern>org.apache.flink.calcite.shaded.org.apache.commons.io</shadedPattern>
								</relocation>

								<!-- flink-table-planner dependencies -->
								<!-- not relocated for now, because we need to change the contents of the properties field otherwise -->
								<!--<relocation>
									<pattern>org.codehaus</pattern>
									<shadedPattern>org.apache.flink.table.shaded.org.codehaus</shadedPattern>
								</relocation>-->

							</relocations>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<!-- Scala Code Style, most of the configuration done via plugin management -->
			<plugin>
				<groupId>org.scalastyle</groupId>
				<artifactId>scalastyle-maven-plugin</artifactId>
				<configuration>
					<configLocation>${project.basedir}/../../tools/maven/scalastyle-config.xml</configLocation>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>test-jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<executions>
					<execution>
						<id>integration-tests</id>
						<phase>integration-test</phase>
						<goals>
							<goal>test</goal>
						</goals>
						<configuration>
							<includes>
								<include>**/*ITCase.*</include>
							</includes>
							<!-- override reuseForks to true to reduce testing time -->
							<reuseForks>true</reuseForks>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
