<?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.9.1</version>
		<relativePath>..</relativePath>
	</parent>


	<artifactId>flink-connectors</artifactId>
	<name>flink-connectors</name>
	<packaging>pom</packaging>

	<modules>
		<module>flink-orc</module>
		<module>flink-jdbc</module>
		<module>flink-hadoop-compatibility</module>
		<module>flink-hbase</module>
		<module>flink-hcatalog</module>
		<module>flink-connector-kafka-base</module>
		<module>flink-connector-kafka-0.9</module>
		<module>flink-connector-kafka-0.10</module>
		<module>flink-connector-kafka-0.11</module>
		<module>flink-connector-elasticsearch-base</module>
		<module>flink-connector-elasticsearch2</module>
		<module>flink-connector-elasticsearch5</module>
		<module>flink-connector-elasticsearch6</module>
		<module>flink-connector-hive</module>
		<module>flink-connector-rabbitmq</module>
		<module>flink-connector-twitter</module>
		<module>flink-connector-nifi</module>
		<module>flink-connector-cassandra</module>
		<module>flink-connector-filesystem</module>
		<module>flink-connector-kafka</module>
		<module>flink-connector-gcp-pubsub</module>
	</modules>

	<!-- override these root dependencies as 'provided', so they don't end up
		in the jars-with-dependencies (uber jars) of connectors and
		user programs that depend on the connectors -->

	<dependencies>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.google.code.findbugs</groupId>
			<artifactId>jsr305</artifactId>
			<scope>provided</scope>
		</dependency>

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

	<!-- See main pom.xml for explanation of profiles -->
	<profiles>

		<!-- Create SQL Client uber jars by default -->
		<profile>
			<id>sql-jars</id>
			<activation>
				<property>
					<name>!skipSqlJars</name>
				</property>
			</activation>
			<modules>
				<module>flink-sql-connector-elasticsearch6</module>
				<module>flink-sql-connector-kafka-0.9</module>
				<module>flink-sql-connector-kafka-0.10</module>
				<module>flink-sql-connector-kafka-0.11</module>
				<module>flink-sql-connector-kafka</module>
			</modules>
		</profile>

		<!-- there's no Kafka 0.8 dependency for Scala 2.12, we only include when building
		for Scala 2.11 -->
		<profile>
			<id>scala-2.11</id>
			<activation>
				<property>
					<name>!scala-2.12</name>
				</property>
			</activation>
			<modules>
				<module>flink-connector-kafka-0.8</module>
			</modules>
		</profile>
		<!--
			We include the kinesis module only optionally because it contains a dependency
			licenced under the "Amazon Software License".
			In accordance with the discussion in https://issues.apache.org/jira/browse/LEGAL-198
			this is an optional module for Flink.
		-->
		<profile>
			<id>include-kinesis</id>
			<activation>
				<property>
					<name>include-kinesis</name>
				</property>
			</activation>
			<modules>
				<module>flink-connector-kinesis</module>
			</modules>
		</profile>
	</profiles>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-enforcer-plugin</artifactId>
				<executions>
					<execution>
						<id>dependency-convergence</id>
						<goals>
							<goal>enforce</goal>
						</goals>
						<configuration>
							<skip>true</skip>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

</project>
