<!--
  ~ Smart Data Lake - Build your data lake the smart way.
  ~
  ~ Copyright © 2019-2020 ELCA Informatique SA (<https://www.elca.ch>)
  ~
  ~ This program is free software: you can redistribute it and/or modify
  ~ it under the terms of the GNU General Public License as published by
  ~ the Free Software Foundation, either version 3 of the License, or
  ~ (at your option) any later version.
  ~
  ~ This program is distributed in the hope that it will be useful,
  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  ~ GNU General Public License for more details.
  ~
  ~ You should have received a copy of the GNU General Public License
  ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
  -->
<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">
	<modelVersion>4.0.0</modelVersion>

	<groupId>io.smartdatalake</groupId>
	<artifactId>sdl-parent</artifactId>
	<version>2.2.0</version>
	<packaging>pom</packaging>

	<modules>
		<module>sdl-core</module>
		<module>sdl-kafka</module>
		<module>sdl-splunk</module>
		<module>sdl-jms</module>
		<module>sdl-deltalake</module>
		<module>sdl-snowflake</module>
		<module>sdl-azure</module>
		<module>sdl-lang</module>
	</modules>

	<licenses>
		<license>
			<name>GNU General Public License (GPL) version 3</name>
			<url>https://www.gnu.org/licenses/gpl-3.0.html</url>
		</license>
	</licenses>

	<!-- Used for license header by maven-license-plugin -->
	<name>Smart Data Lake</name>
	<description>Build your data lake the smart way.</description>
	<url>http://www.smartdatalake.io</url>
	<inceptionYear>2019</inceptionYear>
	<organization>
		<name>ELCA Informatique SA</name>
		<url>https://www.elca.ch</url>
	</organization>

	<developers>
		<developer>
			<name>Smart Data Lake</name>
			<email>smartdatalake@elca.ch</email>
			<organization>ELCA Informatik AG</organization>
			<organizationUrl>http://www.elca.ch</organizationUrl>
		</developer>
	</developers>

	<profiles>
		<profile>
			<id>fat-jar</id>
			<properties>
				<scala.deps.scope>provided</scala.deps.scope>
				<spark.deps.scope>provided</spark.deps.scope>
				<hadoop.deps.scope>provided</hadoop.deps.scope>
				<flume.deps.scope>provided</flume.deps.scope>
				<hive.deps.scope>provided</hive.deps.scope>
				<hive.parquet.scope>provided</hive.parquet.scope>
				<hive.storage.scope>provided</hive.storage.scope>
				<hive.common.scope>provided</hive.common.scope>
				<hive.llap.scope>provided</hive.llap.scope>
				<hive.serde.scope>provided</hive.serde.scope>
				<hive.shims.scope>provided</hive.shims.scope>
				<orc.deps.scope>provided</orc.deps.scope>
				<parquet.deps.scope>provided</parquet.deps.scope>
			</properties>
			<build>
				<plugins>
					<!-- Builds executable fat-jar that includes all dependencies -->
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-shade-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>fat-jar-with-spark</id>
			<build>
				<plugins>
					<!-- Builds executable fat-jar that includes all dependencies -->
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-shade-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>
		<!-- only scala 2.12 supported in spark 3.0 -->
		<profile>
			<id>scala-2.12</id>
			<activation><activeByDefault>true</activeByDefault></activation>
			<properties>
				<scala.minor.version>2.12</scala.minor.version>
				<scala.version>${scala.minor.version}.15</scala.version>
			</properties>
		</profile>
		<!-- default is hadoop 3.2 in spark 3.2 -->
		<profile>
			<id>hadoop-2.7</id>
			<properties>
				<hadoop.version>2.7.4</hadoop.version>
				<curator.version>2.7.1</curator.version>
				<commons-io.version>2.4</commons-io.version>
				<!--
                  the declaration site above of these variables explains why we need to re-assign them here
                -->
				<hadoop-client-api.artifact>hadoop-client</hadoop-client-api.artifact>
				<hadoop-client-runtime.artifact>hadoop-yarn-api</hadoop-client-runtime.artifact>
				<hadoop-client-minicluster.artifact>hadoop-client</hadoop-client-minicluster.artifact>
			</properties>
		</profile>
		<profile>
			<id>release-sonatype</id>
			<distributionManagement>
				<snapshotRepository>
					<id>ossrh</id>
					<name>Central Repository OSSRH</name>
					<url>https://oss.sonatype.org/content/repositories/snapshots</url>
				</snapshotRepository>
				<repository>
					<id>ossrh</id>
					<name>Central Repository OSSRH</name>
					<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
				</repository>
			</distributionManagement>
			<build>
				<plugins>
					<!-- create scala-doc -->
					<plugin>
						<groupId>net.alchim31.maven</groupId>
						<artifactId>scala-maven-plugin</artifactId>
						<version>4.5.4</version>
						<executions>
							<execution>
								<id>scala-doc</id>
								<goals>
									<goal>doc-jar</goal>
								</goals>
								<configuration>
									<args>
										<arg>-no-link-warnings</arg>
									</args>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<!-- sign artifacts with gpg -->
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
						<version>1.6</version>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
								<configuration>
									<!-- Prevent `gpg` from using pinentry programs -->
									<gpgArguments>
										<arg>--pinentry-mode</arg>
										<arg>loopback</arg>
									</gpgArguments>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<!-- deploy to sonatype / maven central -->
					<plugin>
						<groupId>org.sonatype.plugins</groupId>
						<artifactId>nexus-staging-maven-plugin</artifactId>
						<version>1.6.7</version>
						<extensions>true</extensions>
						<configuration>
							<serverId>ossrh</serverId>
							<nexusUrl>https://oss.sonatype.org/</nexusUrl>
							<autoReleaseAfterClose>false</autoReleaseAfterClose>
							<stagingProgressTimeoutMinutes>30</stagingProgressTimeoutMinutes>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<license.header.file>src/license/gplv3-header.txt</license.header.file>

		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.release>8</maven.compiler.release>

		<scala.deps.scope>compile</scala.deps.scope>
		<spark.deps.scope>compile</spark.deps.scope>
		<hadoop.deps.scope>compile</hadoop.deps.scope>

		<flume.deps.scope>compile</flume.deps.scope>
		<hive.deps.scope>compile</hive.deps.scope>
		<hive.parquet.scope>provided</hive.parquet.scope>
		<hive.storage.version>2.7.2</hive.storage.version>
		<hive.storage.scope>compile</hive.storage.scope>
		<hive.common.scope>compile</hive.common.scope>
		<hive.llap.scope>compile</hive.llap.scope>
		<hive.serde.scope>compile</hive.serde.scope>
		<hive.shims.scope>compile</hive.shims.scope>
		<orc.deps.scope>compile</orc.deps.scope>
		<parquet.deps.scope>compile</parquet.deps.scope>
		<parquet.test.deps.scope>test</parquet.test.deps.scope>

		<scala.minor.version>2.12</scala.minor.version>
		<scala.version>${scala.minor.version}.15</scala.version>

		<spark.version>3.2.0</spark.version>
		<spark-extensions.version>3.2.0</spark-extensions.version> <!-- this sdl-specific extensions should match the minor version of property spark.version -->
		<spark.minor.version>3.0</spark.minor.version> <!-- this is used in sdl-snowflake which has no version yet for Spark 3.1 -->

		<!-- SPARK-PARENT start: properties copied from spark-parent pom version for spark-parent import in dependencyManagement -->
		<!-- attention - manually adapted are: zookeeper, scala.version, scala.binary.version -->
		<slf4j.version>1.7.30</slf4j.version>
		<log4j.version>1.2.17</log4j.version>
		<!-- hadoop version must match the hadoop version included by spark-core -->
		<!-- could be better to use cloudera version of hadoop because they backported many bugfixes from later versions -->
		<!--hadoop.version>2.6.0-cdh5.16.1</hadoop.version-->
		<hadoop.version>3.3.1</hadoop.version>
		<protobuf.version>2.5.0</protobuf.version>
		<yarn.version>${hadoop.version}</yarn.version>
		<zookeeper.version>3.6.2</zookeeper.version>
		<curator.version>2.13.0</curator.version>
		<hive.group>org.apache.hive</hive.group>
		<hive.classifier>core</hive.classifier>
		<!-- Version used in Maven Hive dependency -->
		<hive.version>2.3.9</hive.version>
		<hive23.version>2.3.9</hive23.version>
		<!-- Version used for internal directory structure -->
		<hive.version.short>2.3</hive.version.short>
		<derby.version>10.14.2.0</derby.version>
		<parquet.version>1.12.1</parquet.version>
		<orc.version>1.6.11</orc.version>
		<jetty.version>9.4.43.v20210629</jetty.version>
		<jakartaservlet.version>4.0.3</jakartaservlet.version>
		<chill.version>0.10.0</chill.version>
		<ivy.version>2.5.0</ivy.version>
		<oro.version>2.0.8</oro.version>
		<!--
        If you changes codahale.metrics.version, you also need to change
        the link to metrics.dropwizard.io in docs/monitoring.md.
        -->
		<codahale.metrics.version>4.2.0</codahale.metrics.version>
		<avro.version>1.10.2</avro.version>
		<aws.kinesis.client.version>1.12.0</aws.kinesis.client.version>
		<!-- Should be consistent with Kinesis client dependency -->
		<aws.java.sdk.version>1.11.655</aws.java.sdk.version>
		<!-- the producer is used in tests -->
		<aws.kinesis.producer.version>0.12.8</aws.kinesis.producer.version>
		<!--  org.apache.httpcomponents/httpclient-->
		<commons.httpclient.version>4.5.13</commons.httpclient.version>
		<commons.httpcore.version>4.4.14</commons.httpcore.version>
		<commons.math3.version>3.4.1</commons.math3.version>
		<!-- managed up from 3.2.1 for SPARK-11652 -->
		<commons.collections.version>3.2.2</commons.collections.version>
		<scala.binary.version>${scala.minor.version}</scala.binary.version>
		<scalatest-maven-plugin.version>2.0.2</scalatest-maven-plugin.version>
		<scalafmt.parameters>--test</scalafmt.parameters>
		<!-- for now, not running scalafmt as part of default verify pipeline -->
		<scalafmt.skip>true</scalafmt.skip>
		<codehaus.jackson.version>1.9.13</codehaus.jackson.version>
		<fasterxml.jackson.version>2.12.3</fasterxml.jackson.version>
		<snappy.version>1.1.8.4</snappy.version>
		<netlib.java.version>1.1.2</netlib.java.version>
		<netlib.ludovic.dev.version>2.2.0</netlib.ludovic.dev.version>
		<commons-codec.version>1.15</commons-codec.version>
		<commons-compress.version>1.21</commons-compress.version>
		<commons-io.version>2.8.0</commons-io.version>
		<!-- org.apache.commons/commons-lang/-->
		<commons-lang2.version>2.6</commons-lang2.version>
		<!-- org.apache.commons/commons-lang3/-->
		<commons-lang3.version>3.12.0</commons-lang3.version>
		<!-- org.apache.commons/commons-pool2/-->
		<commons-pool2.version>2.6.2</commons-pool2.version>
		<datanucleus-core.version>4.1.17</datanucleus-core.version>
		<guava.version>14.0.1</guava.version>
		<janino.version>3.0.16</janino.version>
		<jersey.version>2.34</jersey.version>
		<joda.version>2.10.10</joda.version>
		<jodd.version>3.5.2</jodd.version>
		<jsr305.version>3.0.0</jsr305.version>
		<libthrift.version>0.12.0</libthrift.version>
		<antlr4.version>4.8</antlr4.version>
		<jpam.version>1.1</jpam.version>
		<selenium.version>3.141.59</selenium.version>
		<htmlunit.version>2.50.0</htmlunit.version>
		<maven-antrun.version>1.8</maven-antrun.version>
		<commons-crypto.version>1.1.0</commons-crypto.version>
		<commons-cli.version>1.2</commons-cli.version>
		<bouncycastle.version>1.60</bouncycastle.version>
		<tink.version>1.6.0</tink.version>
		<!--
        If you are changing Arrow version specification, please check
        ./python/pyspark/sql/pandas/utils.py, and ./python/setup.py too.
        -->
		<arrow.version>2.0.0</arrow.version>
		<!-- org.fusesource.leveldbjni will be used except on arm64 platform. -->
		<leveldbjni.group>org.fusesource.leveldbjni</leveldbjni.group>
		<kubernetes-client.version>5.4.1</kubernetes-client.version>
		<!--
          These default to Hadoop 3.x shaded client/minicluster jars, but since the shaded jars are
          only available in 3.x, we have to switch to non-shaded Hadoop client jars when the active
          profile is hadoop-2.7.

          To make the above work, in the hadoop-2.7 profile section we bind hadoop-client-api to
          hadoop-client and hadoop-client-runtime to hadoop-yarn-api, which is a dependency of the
          former. This effectively moves the hadoop-yarn-api to the same level as hadoop-client, but
          should be fine since both dependencies are required. We cannot use hadoop-client for both
          of these because the maven enforcer plugin bans duplicate dependencies.

          We still leave hadoop-client-minicluster to use hadoop-client because it is of test scope,
          and is only used by spark-yarn module. To avoid the duplicate dependency issue we only
          declare the dependency when we're using hadoop-3.2 profile, in
          resource-managers/yarn/pom.xml.

          Please check SPARK-36835 for more details.
        -->
		<hadoop-client-api.artifact>hadoop-client-api</hadoop-client-api.artifact>
		<hadoop-client-runtime.artifact>hadoop-client-runtime</hadoop-client-runtime.artifact>
		<hadoop-client-minicluster.artifact>hadoop-client-minicluster</hadoop-client-minicluster.artifact>
		<spark.yarn.isHadoopProvided>false</spark.yarn.isHadoopProvided>
		<!-- SPARK-PARENT finished -->

		<!-- other dependency versions -->
		<scopt.version>4.0.1</scopt.version>
		<databricks.spark-xml.version>0.14.0</databricks.spark-xml.version>
		<spark.excel.version>0.14.0</spark.excel.version>
		<ucanaccess.version>5.0.1</ucanaccess.version>
		<hsqldb.version>2.5.2</hsqldb.version>
		<!-- when changing config version, remember to update it in DatabricksSmartDataLakeBuilder main method -->
		<typesafe.config.version>1.4.1</typesafe.config.version>
		<kxbmap.configs.version>0.6.1</kxbmap.configs.version>
		<monix.version>3.4.0</monix.version>
		<splunk.version>1.6.5.0</splunk.version>
		<sshj.version>0.21.1</sshj.version>
		<kafka.version>2.8.0</kafka.version>
		<snowflake-spark.version>2.9.2</snowflake-spark.version>
		<snowflake-jdbc.version>3.13.11</snowflake-jdbc.version>
		<snowflake-snowpark.version>0.11.0</snowflake-snowpark.version>
		<keycloak.version>15.0.2</keycloak.version>
		<delta.version>1.1.0</delta.version>
		<poi.version>4.1.2</poi.version>

		<json4s.version>3.7.0-M11</json4s.version>

		<scaladoc.reader.version>1.0.2</scaladoc.reader.version>

		<scalatest.test.version>3.0.8</scalatest.test.version>
		<sshd.test.version>2.3.0</sshd.test.version>


	</properties>

	<scm>
		<connection>scm:git:git://github.com/smart-data-lake/smart-data-lake.git</connection>
		<developerConnection>scm:git:ssh://github.com/smart-data-lake/smart-data-lake.git</developerConnection>
		<url>http://github.com/smart-data-lake/smart-data-lake/tree/master</url>
	</scm>

	<repositories>
		<repository>
			<id>maven central</id>
			<name>Maven Central Repository</name>
			<url>https://repo1.maven.org/maven2/</url>
		</repository>
		<repository>
			<id>confluent</id>
			<name>Confluent Schema Repository</name>
			<url>https://packages.confluent.io/maven/</url>
		</repository>
		<!-- smartdatalake snapshots -->
		<repository>
			<id>ossrh</id>
			<name>ossrh snapshots</name>
			<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
			<releases><enabled>false</enabled></releases>
			<snapshots><enabled>true</enabled></snapshots>
		</repository>
	</repositories>

	<build>

		<pluginManagement>
			<plugins>

				<!-- add scala sources, if we have also java sources using sourceDirectory / testSourceDirectory tag -->
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>build-helper-maven-plugin</artifactId>
					<version>3.2.0</version>
					<executions>
						<execution>
							<id>add-source</id>
							<phase>generate-sources</phase>
							<goals>
								<goal>add-source</goal>
							</goals>
							<configuration>
								<sources>
									<source>src/main/scala</source>
								</sources>
							</configuration>
						</execution>
						<execution>
							<id>add-test-source</id>
							<phase>generate-test-sources</phase>
							<goals>
								<goal>add-test-source</goal>
							</goals>
							<configuration>
								<sources>
									<source>src/test/scala</source>
								</sources>
							</configuration>
						</execution>
					</executions>
				</plugin>

				<!-- Compiles Scala sources. -->
				<plugin>
					<groupId>net.alchim31.maven</groupId>
					<artifactId>scala-maven-plugin</artifactId>
					<version>4.5.6</version>
					<executions>
						<execution>
							<goals>
								<goal>compile</goal>
								<goal>testCompile</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<scalaCompatVersion>${scala.minor.version}</scalaCompatVersion>
						<checkMultipleScalaVersions>true</checkMultipleScalaVersions>
						<failOnMultipleScalaVersions>true</failOnMultipleScalaVersions>
						<recompileMode>incremental</recompileMode>
						<args>
							<arg>-unchecked</arg>
							<arg>-deprecation</arg>
							<arg>-feature</arg>
							<arg>-explaintypes</arg>
							<arg>-target:jvm-1.8</arg>
						</args>
						<jvmArgs>
							<jvmArg>-Xms64m</jvmArg>
							<jvmArg>-Xmx1024m</jvmArg>
						</jvmArgs>
						<compilerPlugins>
							<!-- embedded scaladoc as annotations -->
							<!-- an alternative library would be com.github.andyglow:scaladoc-compiler-plugin, but there are plugin initialization problems with path on windows. -->
							<compilerPlugin>
								<groupId>com.github.takezoe</groupId>
								<artifactId>runtime-scaladoc-reader_${scala.minor.version}</artifactId>
								<version>${scaladoc.reader.version}</version>
							</compilerPlugin>
						</compilerPlugins>
					</configuration>
				</plugin>

				<!-- rewrite pom for compiling with different scala version profiles -->
				<plugin>
					<groupId>org.spurint.maven.plugins</groupId>
					<artifactId>scala-cross-maven-plugin</artifactId>
					<version>0.2.1</version>
					<executions>
						<execution>
							<id>rewrite-pom</id>
							<goals>
								<goal>rewrite-pom</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- Copies files in resources folders to target folder. -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-resources-plugin</artifactId>
					<version>3.1.0</version>
				</plugin>

				<!-- Checks whether source files have the specified license header. -->
				<plugin>
					<groupId>com.mycila</groupId>
					<artifactId>license-maven-plugin</artifactId>
					<version>3.0</version>
					<configuration>
						<header>${basedir}/${license.header.file}</header>
						<properties>
							<copyright.name>${project.organization.name}</copyright.name>
							<copyright.contact>${project.organization.url}</copyright.contact>
						</properties>
						<includes>
							<include>src/**</include>
						</includes>
						<excludes>
							<exclude>**/*.accdb</exclude>
							<exclude>**/*.mdb</exclude>
							<exclude>**/*.csv</exclude>
							<exclude>**/*.keytab</exclude>
							<exclude>**/*.pkcs12</exclude>
						</excludes>
						<mapping>
							<scala>SLASHSTAR_STYLE</scala>
							<conf>SCRIPT_STYLE</conf>
						</mapping>
						<failIfMissing>false</failIfMissing>
					</configuration>
					<dependencies>
						<dependency>
							<groupId>com.mycila</groupId>
							<artifactId>license-maven-plugin-git</artifactId>
							<version>3.0</version>
						</dependency>
					</dependencies>
					<executions>
						<execution>
							<goals>
								<goal>check</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- Creates the jar without dependencies -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-jar-plugin</artifactId>
					<version>3.1.2</version>
					<configuration>
						<archive>
							<manifest>
								<addClasspath>true</addClasspath>
								<mainClass>io.smartdatalake.app.LocalSmartDataLakeBuilder</mainClass>
							</manifest>
							<manifestEntries>
								<Implementation-Version>${project.version}</Implementation-Version>
							</manifestEntries>
						</archive>
						<excludes>
							<exclude>log4j.properties</exclude> <!-- Logging configuration should be left to user. -->
							<exclude>${project.artifactId}*.jar</exclude> <!-- avoid "Error assembling JAR" because of already existing artifact jar -->
						</excludes>
					</configuration>
				</plugin>

				<!-- Creates a JAR file with the source files of the project. -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<version>3.1.0</version>
					<executions>
						<execution>
							<id>attach-sources</id>
							<goals>
								<goal>jar-no-fork</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<excludes>
							<exclude>log4j.properties</exclude> <!-- Logging configuration source should not be distributed. -->
						</excludes>
					</configuration>
				</plugin>

				<!-- Builds executable fat-jar that includes all dependencies -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-shade-plugin</artifactId>
					<version>3.2.4</version>
					<executions>
						<execution>
							<phase>package</phase>
							<goals>
								<goal>shade</goal>
							</goals>
							<configuration>
								<filters>
									<filter>
										<artifact>*:*</artifact>
										<excludes>
											<exclude>META-INF/*.SF</exclude>
											<exclude>META-INF/*.DSA</exclude>
											<exclude>META-INF/*.RSA</exclude>
											<!-- handle some duplicate warnings: these files are not needed -->
											<exclude>META-INF/DEPENDENCIES</exclude>
											<exclude>META-INF/LICENSE</exclude>
											<exclude>META-INF/LICENSE.txt</exclude>
											<exclude>META-INF/NOTICE</exclude>
											<exclude>META-INF/NOTICE.txt</exclude>
											<exclude>META-INF/ASL2.0</exclude>
											<exclude>META-INF/NOTICE</exclude>
											<exclude>META-INF/MANIFEST.MF</exclude>
											<exclude>META-INF/maven/**/*</exclude>
											<exclude>META-INF/README.txt</exclude>
											<exclude>LICENSE</exclude>
											<exclude>LICENSE.txt</exclude>
											<exclude>NOTICE.txt</exclude>
											<!-- shading doesnt respect Java Modularisation (>JDK9) -->
											<exclude>module-info.class</exclude>
										</excludes>
									</filter>
								</filters>
								<shadedArtifactAttached>true</shadedArtifactAttached>
								<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
								<artifactSet>
									<includes>
										<include>*:*</include>
									</includes>
								</artifactSet>
								<transformers>
									<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
										<resource>reference.conf</resource>
									</transformer>
									<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									</transformer>
									<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer">
									</transformer>
								</transformers>
								<!-- the following archiv tag might show as error in IntelliJ, but it's ok for maven and works! -->
								<archive>
									<compress>false</compress>
									<manifest>
										<mainClass>io.smartdatalake.app.LocalSmartDataLakeBuilder</mainClass>
									</manifest>
									<manifestEntries>
										<Implementation-Version>${project.version}</Implementation-Version>
									</manifestEntries>
								</archive>
							</configuration>
						</execution>
					</executions>
				</plugin>

				<!-- Executes units tests with scalatest  -->
				<plugin>
					<groupId>org.scalatest</groupId>
					<artifactId>scalatest-maven-plugin</artifactId>
					<version>2.0.0</version>
					<configuration>
						<reportsDirectory>
							${project.build.directory}/scalatest-reports
						</reportsDirectory>
						<junitxml>.</junitxml>
						<filereports>
							${project.artifactId}.txt
						</filereports>
						<stdout>WT</stdout>  <!-- without color, show reminder of failed and canceled tests with short stack traces, see: http://www.scalatest.org/user_guide/using_scalatest_with_sbt-->
						<environmentVariables>
							<SPARK_LOCAL_IP>127.0.0.1</SPARK_LOCAL_IP> <!-- Suppresses Spark IP discovery during tests (when executed with mvn test) -->
						</environmentVariables>
					</configuration>
					<executions>
						<execution>
							<goals>
								<goal>test</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- Checks for declared but unused and undeclared but used dependencies in the verify stage -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-dependency-plugin</artifactId>
					<version>3.1.1</version>
					<configuration>
						<failOnWarning>false</failOnWarning>
						<ignoreNonCompile>true</ignoreNonCompile>
						<ignoredUsedUndeclaredDependencies>
							<dependency>org.scalacheck:scalacheck_${scala.minor.version}</dependency>
						</ignoredUsedUndeclaredDependencies>
					</configuration>
					<executions>
						<execution>
							<goals>
								<goal>analyze-only</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- check for dependency version conflicts -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-enforcer-plugin</artifactId>
					<version>3.0.0-M3</version>
					<configuration>
						<rules>
							<requireMavenVersion>
								<version>2.0.6</version>
							</requireMavenVersion>
							<requireJavaVersion>
								<version>1.8</version>
							</requireJavaVersion>
							<dependencyConvergence/>
							<requireProperty>
								<property>scala.minor.version</property>
								<message>You must setscala.minor.version property by activating profile scala-2.11 or scala-2.12!</message>
							</requireProperty>
						</rules>
					</configuration>
				</plugin>

			</plugins>
		</pluginManagement>

		<plugins>

			<!-- Allows handling of version numbers -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>versions-maven-plugin</artifactId>
				<version>2.7</version>
			</plugin>

			<!-- disable executing surefire tests as we use scalatest -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.12.4</version>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>

		</plugins>

	</build>

	<!-- cleanup version of conflicting transitive dependencies reported by mvn enforcer:enforce -->
	<dependencyManagement>
		<dependencies>
			<!--
			  Copy of SPARK-PARENT pom dependency management to cleanup spark dependencies.
			  Import of spark-parent doesnt work, as it is no longer possible to change version by modifying properties.
			  Profile hadoop-3.2 doesn't work anymore like this.
			-->
			<dependency>
				<groupId>org.apache.spark</groupId>
				<artifactId>spark-tags_${scala.binary.version}</artifactId>
				<version>${spark.version}</version>
			</dependency>
			<dependency>
				<groupId>com.twitter</groupId>
				<artifactId>chill_${scala.binary.version}</artifactId>
				<version>${chill.version}</version>
				<exclusions>
					<exclusion>
						<groupId>org.apache.xbean</groupId>
						<artifactId>xbean-asm7-shaded</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>com.twitter</groupId>
				<artifactId>chill-java</artifactId>
				<version>${chill.version}</version>
			</dependency>
			<dependency>
				<groupId>org.spark-project.spark</groupId>
				<artifactId>unused</artifactId>
				<version>1.0.0</version>
				<scope>${spark.deps.scope}</scope>
			</dependency>
			<!-- This artifact is a shaded version of ASM 9.x. The POM that was used to produce this
           		 is at https://github.com/apache/geronimo-xbean/tree/trunk/xbean-asm9-shaded
                 For context on why we shade ASM, see SPARK-782 and SPARK-6152. -->
			<dependency>
				<groupId>org.apache.xbean</groupId>
				<artifactId>xbean-asm9-shaded</artifactId>
				<version>4.20</version>
				<scope>${spark.deps.scope}</scope>
			</dependency>
			<!-- Shaded deps marked as provided. These are promoted to compile scope
                 in the modules where we want the shaded classes to appear in the
                 associated jar. -->
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-http</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-continuation</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-servlet</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-servlets</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-proxy</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-client</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-util</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-security</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-plus</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-server</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-webapp</artifactId>
				<version>${jetty.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>${guava.version}</version>
				<scope>${spark.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.jpmml</groupId>
				<artifactId>pmml-model</artifactId>
				<version>1.4.8</version>
				<scope>provided</scope>
				<exclusions>
					<exclusion>
						<groupId>org.jpmml</groupId>
						<artifactId>pmml-agent</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<!-- End of shaded deps -->

			<!-- Provide a JAXB impl; no longer auto available in Java 9+ in the JDK -->
			<dependency>
				<groupId>org.glassfish.jaxb</groupId>
				<artifactId>jaxb-runtime</artifactId>
				<version>2.3.2</version>
				<scope>compile</scope>
				<exclusions>
					<!-- for now, we only write XML in PMML export, and these can be excluded -->
					<exclusion>
						<groupId>com.sun.xml.fastinfoset</groupId>
						<artifactId>FastInfoset</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.glassfish.jaxb</groupId>
						<artifactId>txw2</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.jvnet.staxex</groupId>
						<artifactId>stax-ex</artifactId>
					</exclusion>
					<!--
                      SPARK-27611: Exclude redundant javax.activation implementation, which
                      conflicts with the existing javax.activation:activation:1.1.1 dependency.
                      -->
					<exclusion>
						<groupId>jakarta.activation</groupId>
						<artifactId>jakarta.activation-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-lang3</artifactId>
				<version>${commons-lang3.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-text</artifactId>
				<version>1.6</version>
			</dependency>
			<dependency>
				<groupId>commons-lang</groupId>
				<artifactId>commons-lang</artifactId>
				<version>${commons-lang2.version}</version>
			</dependency>
			<dependency>
				<groupId>commons-io</groupId>
				<artifactId>commons-io</artifactId>
				<version>${commons-io.version}</version>
			</dependency>
			<dependency>
				<groupId>commons-codec</groupId>
				<artifactId>commons-codec</artifactId>
				<version>${commons-codec.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-math3</artifactId>
				<version>${commons.math3.version}</version>
			</dependency>
			<dependency>
				<groupId>commons-collections</groupId>
				<artifactId>commons-collections</artifactId>
				<version>${commons.collections.version}</version>
			</dependency>
			<dependency>
				<groupId>commons-beanutils</groupId>
				<artifactId>commons-beanutils</artifactId>
				<version>1.9.4</version>
			</dependency>
			<dependency>
				<groupId>commons-logging</groupId>
				<artifactId>commons-logging</artifactId>
				<!-- Hive uses commons-logging 1.1.3 from 0.13 to 1.2 -->
				<version>1.1.3</version>
			</dependency>
			<dependency>
				<groupId>org.apache.ivy</groupId>
				<artifactId>ivy</artifactId>
				<version>${ivy.version}</version>
			</dependency>
			<dependency>
				<groupId>com.google.code.findbugs</groupId>
				<artifactId>jsr305</artifactId>
				<version>${jsr305.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.httpcomponents</groupId>
				<artifactId>httpclient</artifactId>
				<version>${commons.httpclient.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.httpcomponents</groupId>
				<artifactId>httpmime</artifactId>
				<version>${commons.httpclient.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.httpcomponents</groupId>
				<artifactId>httpcore</artifactId>
				<version>${commons.httpcore.version}</version>
			</dependency>
			<dependency>
				<groupId>${leveldbjni.group}</groupId>
				<artifactId>leveldbjni-all</artifactId>
				<version>1.8</version>
			</dependency>
			<dependency>
				<groupId>xml-apis</groupId>
				<artifactId>xml-apis</artifactId>
				<version>1.4.01</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j.version}</version>
				<scope>${hadoop.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
				<version>${slf4j.version}</version>
				<scope>${hadoop.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>jul-to-slf4j</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>jcl-over-slf4j</artifactId>
				<version>${slf4j.version}</version>
				<!-- runtime scope is appropriate, but causes SBT build problems -->
			</dependency>
			<dependency>
				<groupId>log4j</groupId>
				<artifactId>log4j</artifactId>
				<version>${log4j.version}</version>
				<scope>${hadoop.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>com.ning</groupId>
				<artifactId>compress-lzf</artifactId>
				<version>1.0.3</version>
			</dependency>
			<dependency>
				<groupId>org.xerial.snappy</groupId>
				<artifactId>snappy-java</artifactId>
				<version>${snappy.version}</version>
			</dependency>
			<dependency>
				<groupId>org.lz4</groupId>
				<artifactId>lz4-java</artifactId>
				<version>1.7.1</version>
			</dependency>
			<dependency>
				<groupId>com.github.luben</groupId>
				<artifactId>zstd-jni</artifactId>
				<version>1.5.0-4</version>
			</dependency>
			<dependency>
				<groupId>com.clearspring.analytics</groupId>
				<artifactId>stream</artifactId>
				<version>2.9.6</version>
				<exclusions>
					<!-- Only HyperLogLogPlus is used, which doesn't depend on fastutil -->
					<exclusion>
						<groupId>it.unimi.dsi</groupId>
						<artifactId>fastutil</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<!-- In theory we need not directly depend on protobuf since Spark does not directly
                 use it. However, when building with Hadoop/YARN 2.2 Maven doesn't correctly bump
                 the protobuf version up from the one Mesos gives. For now we include this variable
                 to explicitly bump the version when building with YARN. It would be nice to figure
                 out why Maven can't resolve this correctly (like SBT does). -->
			<dependency>
				<groupId>com.google.protobuf</groupId>
				<artifactId>protobuf-java</artifactId>
				<version>${protobuf.version}</version>
				<scope>${hadoop.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.roaringbitmap</groupId>
				<artifactId>RoaringBitmap</artifactId>
				<version>0.7.45</version>
			</dependency>
			<dependency>
				<groupId>commons-net</groupId>
				<artifactId>commons-net</artifactId>
				<version>3.1</version>
			</dependency>
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-all</artifactId>
				<version>4.1.68.Final</version>
			</dependency>
			<dependency>
				<groupId>org.apache.derby</groupId>
				<artifactId>derby</artifactId>
				<version>${derby.version}</version>
			</dependency>
			<dependency>
				<groupId>io.dropwizard.metrics</groupId>
				<artifactId>metrics-core</artifactId>
				<version>${codahale.metrics.version}</version>
			</dependency>
			<dependency>
				<groupId>io.dropwizard.metrics</groupId>
				<artifactId>metrics-jvm</artifactId>
				<version>${codahale.metrics.version}</version>
			</dependency>
			<dependency>
				<groupId>io.dropwizard.metrics</groupId>
				<artifactId>metrics-json</artifactId>
				<version>${codahale.metrics.version}</version>
			</dependency>
			<dependency>
				<groupId>io.dropwizard.metrics</groupId>
				<artifactId>metrics-graphite</artifactId>
				<version>${codahale.metrics.version}</version>
			</dependency>
			<dependency>
				<groupId>io.dropwizard.metrics</groupId>
				<artifactId>metrics-jmx</artifactId>
				<version>${codahale.metrics.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-core</artifactId>
				<version>${fasterxml.jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-databind</artifactId>
				<version>${fasterxml.jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-annotations</artifactId>
				<version>${fasterxml.jackson.version}</version>
			</dependency>
			<!-- Guava is excluded because of SPARK-6149.  The Guava version referenced in this module is
                 15.0, which causes runtime incompatibility issues. -->
			<dependency>
				<groupId>com.fasterxml.jackson.module</groupId>
				<artifactId>jackson-module-scala_${scala.binary.version}</artifactId>
				<version>${fasterxml.jackson.version}</version>
				<exclusions>
					<exclusion>
						<groupId>com.google.guava</groupId>
						<artifactId>guava</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.module</groupId>
				<artifactId>jackson-module-jaxb-annotations</artifactId>
				<version>${fasterxml.jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.core</groupId>
				<artifactId>jersey-server</artifactId>
				<version>${jersey.version}</version>
				<!-- SPARK-28765 Unused JDK11-specific dependency -->
				<exclusions>
					<exclusion>
						<groupId>jakarta.xml.bind</groupId>
						<artifactId>jakarta.xml.bind-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.core</groupId>
				<artifactId>jersey-common</artifactId>
				<version>${jersey.version}</version>
				<!-- SPARK-28765 Unused JDK11-specific dependency -->
				<exclusions>
					<exclusion>
						<groupId>com.sun.activation</groupId>
						<artifactId>jakarta.activation</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.core</groupId>
				<artifactId>jersey-client</artifactId>
				<version>${jersey.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.containers</groupId>
				<artifactId>jersey-container-servlet</artifactId>
				<version>${jersey.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.containers</groupId>
				<artifactId>jersey-container-servlet-core</artifactId>
				<version>${jersey.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.inject</groupId>
				<artifactId>jersey-hk2</artifactId>
				<version>${jersey.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey</groupId>
				<artifactId>jersey-client</artifactId>
				<version>${jersey.version}</version>
			</dependency>
			<dependency>
				<groupId>javax.ws.rs</groupId>
				<artifactId>javax.ws.rs-api</artifactId>
				<version>2.0.1</version>
			</dependency>
			<dependency>
				<groupId>javax.xml.bind</groupId>
				<artifactId>jaxb-api</artifactId>
				<version>2.2.11</version>
			</dependency>
			<dependency>
				<groupId>org.scalanlp</groupId>
				<artifactId>breeze_${scala.binary.version}</artifactId>
				<version>1.2</version>
				<exclusions>
					<exclusion>
						<groupId>org.apache.commons</groupId>
						<artifactId>commons-math3</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.json4s</groupId>
				<artifactId>json4s-jackson_${scala.binary.version}</artifactId>
				<version>${json4s.version}</version>
				<exclusions>
					<exclusion>
						<groupId>com.fasterxml.jackson.core</groupId>
						<artifactId>*</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.json4s</groupId>
				<artifactId>json4s-ast_${scala.minor.version}</artifactId>
				<version>${json4s.version}</version>
			</dependency>
			<dependency>
				<groupId>org.json4s</groupId>
				<artifactId>json4s-core_${scala.minor.version}</artifactId>
				<version>${json4s.version}</version>
			</dependency>
			<dependency>
				<groupId>org.scala-lang.modules</groupId>
				<artifactId>scala-xml_${scala.binary.version}</artifactId>
				<version>1.2.0</version>
				<scope>${scala.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.scala-lang</groupId>
				<artifactId>scala-compiler</artifactId>
				<version>${scala.version}</version>
				<scope>${scala.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.scala-lang</groupId>
				<artifactId>scala-reflect</artifactId>
				<version>${scala.version}</version>
				<scope>${scala.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.scala-lang</groupId>
				<artifactId>scala-library</artifactId>
				<version>${scala.version}</version>
				<scope>${scala.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.scala-lang</groupId>
				<artifactId>scala-actors</artifactId>
				<version>${scala.version}</version>
				<scope>${scala.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.scala-lang.modules</groupId>
				<artifactId>scala-parser-combinators_${scala.binary.version}</artifactId>
				<version>1.1.2</version>
				<scope>${scala.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>jline</groupId>
				<artifactId>jline</artifactId>
				<version>2.14.6</version>
			</dependency>
			<dependency>
				<groupId>org.apache.curator</groupId>
				<artifactId>curator-recipes</artifactId>
				<version>${curator.version}</version>
				<scope>${hadoop.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>org.jboss.netty</groupId>
						<artifactId>netty</artifactId>
					</exclusion>
					<exclusion>
						<groupId>jline</groupId>
						<artifactId>jline</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.curator</groupId>
				<artifactId>curator-client</artifactId>
				<version>${curator.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.curator</groupId>
				<artifactId>curator-framework</artifactId>
				<version>${curator.version}</version>
			</dependency>
			<!-- Hadoop 3.x dependencies -->
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>${hadoop-client-api.artifact}</artifactId>
				<version>${hadoop.version}</version>
				<scope>${hadoop.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>${hadoop-client-runtime.artifact}</artifactId>
				<version>${hadoop.version}</version>
				<scope>${hadoop.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>${hadoop-client-minicluster.artifact}</artifactId>
				<version>${yarn.version}</version>
				<scope>test</scope>
			</dependency>
			<!-- End of Hadoop 3.x dependencies -->
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>hadoop-client</artifactId>
				<version>${hadoop.version}</version>
				<scope>${hadoop.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>org.fusesource.leveldbjni</groupId>
						<artifactId>leveldbjni-all</artifactId>
					</exclusion>
					<exclusion>
						<groupId>asm</groupId>
						<artifactId>asm</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.codehaus.jackson</groupId>
						<artifactId>jackson-mapper-asl</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.ow2.asm</groupId>
						<artifactId>asm</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.jboss.netty</groupId>
						<artifactId>netty</artifactId>
					</exclusion>
					<exclusion>
						<groupId>io.netty</groupId>
						<artifactId>netty</artifactId>
					</exclusion>
					<exclusion>
						<!-- BeanUtils >= 1.9.0 no longer splits out -core; exclude it -->
						<groupId>commons-beanutils</groupId>
						<artifactId>commons-beanutils-core</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.mockito</groupId>
						<artifactId>mockito-all</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.mortbay.jetty</groupId>
						<artifactId>servlet-api-2.5</artifactId>
					</exclusion>
					<exclusion>
						<groupId>javax.servlet</groupId>
						<artifactId>servlet-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>junit</groupId>
						<artifactId>junit</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey.jersey-test-framework</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey.contribs</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>net.java.dev.jets3t</groupId>
						<artifactId>jets3t</artifactId>
					</exclusion>
					<!-- Hadoop-3.2 -->
					<exclusion>
						<groupId>javax.ws.rs</groupId>
						<artifactId>jsr311-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.eclipse.jetty</groupId>
						<artifactId>jetty-webapp</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<!-- Managed up to match Hadoop in HADOOP-16530 -->
			<dependency>
				<groupId>xerces</groupId>
				<artifactId>xercesImpl</artifactId>
				<version>2.12.2</version>
			</dependency>
			<dependency>
				<groupId>org.apache.avro</groupId>
				<artifactId>avro</artifactId>
				<version>${avro.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.avro</groupId>
				<artifactId>avro-mapred</artifactId>
				<version>${avro.version}</version>
				<scope>${hive.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>org.apache.avro</groupId>
						<artifactId>avro-ipc-jetty</artifactId>
					</exclusion>
					<exclusion>
						<groupId>io.netty</groupId>
						<artifactId>netty</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.mortbay.jetty</groupId>
						<artifactId>jetty</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.mortbay.jetty</groupId>
						<artifactId>jetty-util</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.mortbay.jetty</groupId>
						<artifactId>servlet-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.velocity</groupId>
						<artifactId>velocity-engine-core</artifactId>
					</exclusion>
					<exclusion>
						<groupId>javax.annotation</groupId>
						<artifactId>javax.annotation-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.github.luben</groupId>
						<artifactId>zstd-jni</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.tukaani</groupId>
				<artifactId>xz</artifactId>
				<version>1.8</version>
			</dependency>
			<!-- See SPARK-23654 for info on this dependency;
            It is used to keep javax.activation at v1.1.1 after dropping
            jets3t as a dependency.
             -->
			<dependency>
				<groupId>javax.activation</groupId>
				<artifactId>activation</artifactId>
				<version>1.1.1</version>
				<scope>${hadoop.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>hadoop-yarn-api</artifactId>
				<version>${yarn.version}</version>
				<scope>${hadoop.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>javax.servlet</groupId>
						<artifactId>servlet-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>asm</groupId>
						<artifactId>asm</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.ow2.asm</groupId>
						<artifactId>asm</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.jboss.netty</groupId>
						<artifactId>netty</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey.jersey-test-framework</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey.contribs</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>jdk.tools</groupId>
						<artifactId>jdk.tools</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>hadoop-yarn-common</artifactId>
				<version>${yarn.version}</version>
				<scope>${hadoop.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>asm</groupId>
						<artifactId>asm</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.ow2.asm</groupId>
						<artifactId>asm</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.jboss.netty</groupId>
						<artifactId>netty</artifactId>
					</exclusion>
					<exclusion>
						<groupId>javax.servlet</groupId>
						<artifactId>servlet-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey.jersey-test-framework</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey.contribs</groupId>
						<artifactId>*</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>hadoop-yarn-server-web-proxy</artifactId>
				<version>${yarn.version}</version>
				<scope>${hadoop.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>org.apache.hadoop</groupId>
						<artifactId>hadoop-yarn-server-common</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hadoop</groupId>
						<artifactId>hadoop-yarn-common</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hadoop</groupId>
						<artifactId>hadoop-yarn-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.bouncycastle</groupId>
						<artifactId>bcprov-jdk15on</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.bouncycastle</groupId>
						<artifactId>bcpkix-jdk15on</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.fusesource.leveldbjni</groupId>
						<artifactId>leveldbjni-all</artifactId>
					</exclusion>
					<exclusion>
						<groupId>asm</groupId>
						<artifactId>asm</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.ow2.asm</groupId>
						<artifactId>asm</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.jboss.netty</groupId>
						<artifactId>netty</artifactId>
					</exclusion>
					<exclusion>
						<groupId>javax.servlet</groupId>
						<artifactId>servlet-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>javax.servlet</groupId>
						<artifactId>javax.servlet-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey.jersey-test-framework</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey.contribs</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<!-- Hadoop-3.2 -->
					<exclusion>
						<groupId>com.zaxxer</groupId>
						<artifactId>HikariCP-java7</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.microsoft.sqlserver</groupId>
						<artifactId>mssql-jdbc</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>hadoop-yarn-client</artifactId>
				<version>${yarn.version}</version>
				<scope>${hadoop.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>asm</groupId>
						<artifactId>asm</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.ow2.asm</groupId>
						<artifactId>asm</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.jboss.netty</groupId>
						<artifactId>netty</artifactId>
					</exclusion>
					<exclusion>
						<groupId>javax.servlet</groupId>
						<artifactId>servlet-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey.jersey-test-framework</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.jersey.contribs</groupId>
						<artifactId>*</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.zookeeper</groupId>
				<artifactId>zookeeper</artifactId>
				<version>${zookeeper.version}</version>
				<scope>${hadoop.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>org.jboss.netty</groupId>
						<artifactId>netty</artifactId>
					</exclusion>
					<exclusion>
						<groupId>jline</groupId>
						<artifactId>jline</artifactId>
					</exclusion>
					<exclusion>
						<groupId>io.netty</groupId>
						<artifactId>netty-handler</artifactId>
					</exclusion>
					<exclusion>
						<groupId>io.netty</groupId>
						<artifactId>netty-transport-native-epoll</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.github.spotbugs</groupId>
						<artifactId>spotbugs-annotations</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.codehaus.jackson</groupId>
				<artifactId>jackson-core-asl</artifactId>
				<version>${codehaus.jackson.version}</version>
				<scope>${hadoop.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.codehaus.jackson</groupId>
				<artifactId>jackson-mapper-asl</artifactId>
				<version>${codehaus.jackson.version}</version>
				<scope>${hadoop.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.codehaus.jackson</groupId>
				<artifactId>jackson-xc</artifactId>
				<version>${codehaus.jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>org.codehaus.jackson</groupId>
				<artifactId>jackson-jaxrs</artifactId>
				<version>${codehaus.jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>${hive.group}</groupId>
				<artifactId>hive-beeline</artifactId>
				<version>${hive.version}</version>
				<scope>${hive.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-common</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-exec</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-jdbc</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-metastore</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-service</artifactId>
					</exclusion>
					<exclusion>
						<!-- All classes are covered by spark's hive-thriftserver module -->
						<groupId>${hive.group}</groupId>
						<artifactId>hive-service-rpc</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-shims</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libthrift</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-log4j12</artifactId>
					</exclusion>
					<exclusion>
						<groupId>log4j</groupId>
						<artifactId>log4j</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>${hive.group}</groupId>
				<artifactId>hive-cli</artifactId>
				<version>${hive.version}</version>
				<scope>${hive.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-common</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-exec</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-jdbc</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-metastore</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-serde</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-service</artifactId>
					</exclusion>
					<exclusion>
						<!-- All classes are covered by spark's hive-thriftserver module -->
						<groupId>${hive.group}</groupId>
						<artifactId>hive-service-rpc</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-shims</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libthrift</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-log4j12</artifactId>
					</exclusion>
					<exclusion>
						<groupId>log4j</groupId>
						<artifactId>log4j</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>${hive.group}</groupId>
				<artifactId>hive-common</artifactId>
				<version>${hive.version}</version>
				<scope>${hive.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-shims</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.ant</groupId>
						<artifactId>ant</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hadoop</groupId>
						<artifactId>hadoop-common</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hadoop</groupId>
						<artifactId>hadoop-auth</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.zookeeper</groupId>
						<artifactId>zookeeper</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-log4j12</artifactId>
					</exclusion>
					<exclusion>
						<groupId>log4j</groupId>
						<artifactId>log4j</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
					<!-- Begin of Hive 2.3 exclusion -->
					<!--
                      ORC is needed, but the version should be consistent with the `sql/core` ORC data source.
                      Looks like this is safe, please see the major changes from ORC 1.3.3 to 1.5.4:
                      HIVE-17631 and HIVE-19465
                    -->
					<exclusion>
						<groupId>org.apache.orc</groupId>
						<artifactId>orc-core</artifactId>
					</exclusion>
					<!-- jetty-all conflict with jetty 9.4.12.v20180830 -->
					<exclusion>
						<groupId>org.eclipse.jetty.aggregate</groupId>
						<artifactId>jetty-all</artifactId>
					</exclusion>
					<!-- org.apache.logging.log4j:* conflict with log4j 1.2.17 -->
					<exclusion>
						<groupId>org.apache.logging.log4j</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<!-- Hive includes javax.servlet to fix the Hive on Spark test failure; see HIVE-12783 -->
					<exclusion>
						<groupId>org.eclipse.jetty.orbit</groupId>
						<artifactId>javax.servlet</artifactId>
					</exclusion>
					<!-- hive-storage-api is needed and must be explicitly included later -->
					<exclusion>
						<groupId>org.apache.hive</groupId>
						<artifactId>hive-storage-api</artifactId>
					</exclusion>
					<!-- End of Hive 2.3 exclusion -->
				</exclusions>
			</dependency>

			<dependency>
				<groupId>${hive.group}</groupId>
				<artifactId>hive-exec</artifactId>
				<classifier>${hive.classifier}</classifier>
				<version>${hive.version}</version>
				<scope>${hive.deps.scope}</scope>
				<exclusions>

					<!-- pull this in when needed; the explicit definition culls the surplis-->
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-metastore</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-shims</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-ant</artifactId>
					</exclusion>
					<!-- break the loop -->
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>spark-client</artifactId>
					</exclusion>

					<!-- excluded dependencies & transitive.
                     Some may be needed to be explicitly included-->
					<exclusion>
						<groupId>ant</groupId>
						<artifactId>ant</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.ant</groupId>
						<artifactId>ant</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.esotericsoftware.kryo</groupId>
						<artifactId>kryo</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-codec</groupId>
						<artifactId>commons-codec</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.avro</groupId>
						<artifactId>avro-mapred</artifactId>
					</exclusion>
					<!--  Do not need Calcite because we disabled hive.cbo.enable -->
					<exclusion>
						<groupId>org.apache.calcite</groupId>
						<artifactId>calcite-core</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.calcite</groupId>
						<artifactId>calcite-avatica</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.curator</groupId>
						<artifactId>apache-curator</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.curator</groupId>
						<artifactId>curator-client</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.curator</groupId>
						<artifactId>curator-framework</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libthrift</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libfb303</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.zookeeper</groupId>
						<artifactId>zookeeper</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-log4j12</artifactId>
					</exclusion>
					<exclusion>
						<groupId>log4j</groupId>
						<artifactId>log4j</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.codehaus.groovy</groupId>
						<artifactId>groovy-all</artifactId>
					</exclusion>
					<exclusion>
						<groupId>jline</groupId>
						<artifactId>jline</artifactId>
					</exclusion>
					<!-- Cat X license now; see SPARK-18262 -->
					<exclusion>
						<groupId>org.json</groupId>
						<artifactId>json</artifactId>
					</exclusion>
					<!-- Begin of Hive 2.3 exclusion -->
					<!-- Do not need Tez -->
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-llap-tez</artifactId>
					</exclusion>
					<!-- Do not need Calcite, see SPARK-27054 -->
					<exclusion>
						<groupId>org.apache.calcite</groupId>
						<artifactId>calcite-druid</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.calcite.avatica</groupId>
						<artifactId>avatica</artifactId>
					</exclusion>
					<!-- org.apache.logging.log4j:* conflict with log4j 1.2.17 -->
					<exclusion>
						<groupId>org.apache.logging.log4j</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<exclusion>
						<groupId>net.hydromatic</groupId>
						<artifactId>eigenbase-properties</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.codehaus.janino</groupId>
						<artifactId>commons-compiler</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.codehaus.janino</groupId>
						<artifactId>janino</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.pentaho</groupId>
						<artifactId>pentaho-aggdesigner-algorithm</artifactId>
					</exclusion>
					<!-- End of Hive 2.3 exclusion -->
				</exclusions>
			</dependency>
			<dependency>
				<groupId>${hive.group}</groupId>
				<artifactId>hive-jdbc</artifactId>
				<version>${hive.version}</version>
				<exclusions>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-common</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-metastore</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-serde</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-service</artifactId>
					</exclusion>
					<exclusion>
						<!-- All classes are covered by spark's hive-thriftserver module -->
						<groupId>${hive.group}</groupId>
						<artifactId>hive-service-rpc</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-shims</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.curator</groupId>
						<artifactId>curator-framework</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libthrift</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libfb303</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.zookeeper</groupId>
						<artifactId>zookeeper</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-log4j12</artifactId>
					</exclusion>
					<exclusion>
						<groupId>log4j</groupId>
						<artifactId>log4j</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.codehaus.groovy</groupId>
						<artifactId>groovy-all</artifactId>
					</exclusion>
				</exclusions>
			</dependency>

			<dependency>
				<groupId>${hive.group}</groupId>
				<artifactId>hive-metastore</artifactId>
				<version>${hive.version}</version>
				<scope>${hive.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-serde</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-shims</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libfb303</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libthrift</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.mortbay.jetty</groupId>
						<artifactId>servlet-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.google.guava</groupId>
						<artifactId>guava</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-log4j12</artifactId>
					</exclusion>
					<!-- Begin of Hive 2.3 exclusion -->
					<!-- Hive removes the HBase Metastore; see HIVE-17234 -->
					<exclusion>
						<groupId>org.apache.hbase</groupId>
						<artifactId>hbase-client</artifactId>
					</exclusion>
					<exclusion>
						<groupId>co.cask.tephra</groupId>
						<artifactId>*</artifactId>
					</exclusion>
					<!-- End of Hive 2.3 exclusion -->
				</exclusions>
			</dependency>

			<dependency>
				<groupId>${hive.group}</groupId>
				<artifactId>hive-serde</artifactId>
				<version>${hive.version}</version>
				<scope>${hive.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-common</artifactId>
					</exclusion>
					<exclusion>
						<groupId>${hive.group}</groupId>
						<artifactId>hive-shims</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-codec</groupId>
						<artifactId>commons-codec</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.google.code.findbugs</groupId>
						<artifactId>jsr305</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.avro</groupId>
						<artifactId>avro</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libthrift</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libfb303</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-log4j12</artifactId>
					</exclusion>
					<exclusion>
						<groupId>log4j</groupId>
						<artifactId>log4j</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.codehaus.groovy</groupId>
						<artifactId>groovy-all</artifactId>
					</exclusion>
					<!-- Begin of Hive 2.3 exclusion -->
					<exclusion>
						<!-- All classes are covered by spark's hive-thriftserver module -->
						<groupId>${hive.group}</groupId>
						<artifactId>hive-service-rpc</artifactId>
					</exclusion>
					<!-- parquet-hadoop-bundle:1.8.1 conflict with 1.12.0 -->
					<exclusion>
						<groupId>org.apache.parquet</groupId>
						<artifactId>parquet-hadoop-bundle</artifactId>
					</exclusion>
					<!-- Do not need Jasper, see HIVE-19799 -->
					<exclusion>
						<groupId>tomcat</groupId>
						<artifactId>jasper-compiler</artifactId>
					</exclusion>
					<exclusion>
						<groupId>tomcat</groupId>
						<artifactId>jasper-runtime</artifactId>
					</exclusion>
					<!-- End of Hive 2.3 exclusion -->
				</exclusions>
			</dependency>

			<dependency>
				<groupId>net.sf.jpam</groupId>
				<artifactId>jpam</artifactId>
				<scope>${hive.deps.scope}</scope>
				<version>${jpam.version}</version>
				<exclusions>
					<exclusion>
						<groupId>javax.servlet</groupId>
						<artifactId>servlet-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>

			<!-- hive shims pulls in hive 0.23 and a transitive dependency of the Hadoop version
              Hive was built against. This dependency cuts out the YARN/hadoop dependency, which
              is needed by Hive to submit work to a YARN cluster.-->
			<dependency>
				<groupId>${hive.group}</groupId>
				<artifactId>hive-shims</artifactId>
				<version>${hive.version}</version>
				<scope>${hive.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>com.google.guava</groupId>
						<artifactId>guava</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hadoop</groupId>
						<artifactId>hadoop-yarn-server-resourcemanager</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.curator</groupId>
						<artifactId>curator-framework</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.thrift</groupId>
						<artifactId>libthrift</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.zookeeper</groupId>
						<artifactId>zookeeper</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-log4j12</artifactId>
					</exclusion>
					<exclusion>
						<groupId>log4j</groupId>
						<artifactId>log4j</artifactId>
					</exclusion>
					<exclusion>
						<groupId>commons-logging</groupId>
						<artifactId>commons-logging</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.codehaus.groovy</groupId>
						<artifactId>groovy-all</artifactId>
					</exclusion>
					<!-- Begin of Hive 2.3 exclusion -->
					<!-- Exclude log4j-slf4j-impl, otherwise throw NCDFE when starting spark-shell -->
					<exclusion>
						<groupId>org.apache.logging.log4j</groupId>
						<artifactId>log4j-slf4j-impl</artifactId>
					</exclusion>
					<!-- End of Hive 2.3 exclusion -->
				</exclusions>
			</dependency>

			<!-- hive-llap-common is needed when registering UDFs in Hive 2.3.
               We add it here, otherwise -Phive-provided won't work. -->
			<dependency>
				<groupId>org.apache.hive</groupId>
				<artifactId>hive-llap-common</artifactId>
				<version>${hive23.version}</version>
				<scope>${hive.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>org.apache.hive</groupId>
						<artifactId>hive-common</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hive</groupId>
						<artifactId>hive-serde</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.orc</groupId>
				<artifactId>orc-core</artifactId>
				<version>${orc.version}</version>
				<scope>${orc.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>javax.xml.bind</groupId>
						<artifactId>jaxb-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hadoop</groupId>
						<artifactId>hadoop-common</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hadoop</groupId>
						<artifactId>hadoop-hdfs</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hive</groupId>
						<artifactId>hive-storage-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.orc</groupId>
				<artifactId>orc-mapreduce</artifactId>
				<version>${orc.version}</version>
				<scope>${orc.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>org.apache.hadoop</groupId>
						<artifactId>hadoop-common</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hadoop</groupId>
						<artifactId>hadoop-mapreduce-client-core</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.orc</groupId>
						<artifactId>orc-core</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.apache.hive</groupId>
						<artifactId>hive-storage-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId> com.esotericsoftware</groupId>
						<artifactId>kryo-shaded</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.parquet</groupId>
				<artifactId>parquet-column</artifactId>
				<version>${parquet.version}</version>
				<scope>${parquet.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.parquet</groupId>
				<artifactId>parquet-hadoop</artifactId>
				<version>${parquet.version}</version>
				<scope>${parquet.deps.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>commons-pool</groupId>
						<artifactId>commons-pool</artifactId>
					</exclusion>
					<exclusion>
						<groupId>javax.annotation</groupId>
						<artifactId>javax.annotation-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.parquet</groupId>
				<artifactId>parquet-avro</artifactId>
				<version>${parquet.version}</version>
				<scope>${parquet.test.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.codehaus.janino</groupId>
				<artifactId>janino</artifactId>
				<version>${janino.version}</version>
			</dependency>
			<dependency>
				<groupId>org.codehaus.janino</groupId>
				<artifactId>commons-compiler</artifactId>
				<version>${janino.version}</version>
			</dependency>
			<dependency>
				<groupId>joda-time</groupId>
				<artifactId>joda-time</artifactId>
				<version>${joda.version}</version>
			</dependency>
			<dependency>
				<groupId>org.jodd</groupId>
				<artifactId>jodd-core</artifactId>
				<version>${jodd.version}</version>
			</dependency>
			<dependency>
				<groupId>org.datanucleus</groupId>
				<artifactId>datanucleus-core</artifactId>
				<version>${datanucleus-core.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.thrift</groupId>
				<artifactId>libthrift</artifactId>
				<version>${libthrift.version}</version>
				<exclusions>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.thrift</groupId>
				<artifactId>libfb303</artifactId>
				<version>0.9.3</version>
				<exclusions>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.antlr</groupId>
				<artifactId>antlr4-runtime</artifactId>
				<version>${antlr4.version}</version>
			</dependency>
			<dependency>
				<groupId>org.antlr</groupId>
				<artifactId>antlr4</artifactId>
				<version>${antlr4.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-crypto</artifactId>
				<version>${commons-crypto.version}</version>
				<exclusions>
					<exclusion>
						<groupId>net.java.dev.jna</groupId>
						<artifactId>jna</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>com.google.crypto.tink</groupId>
				<artifactId>tink</artifactId>
				<version>${tink.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.arrow</groupId>
				<artifactId>arrow-vector</artifactId>
				<version>${arrow.version}</version>
				<exclusions>
					<exclusion>
						<groupId>com.fasterxml.jackson.core</groupId>
						<artifactId>jackson-annotations</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.fasterxml.jackson.core</groupId>
						<artifactId>jackson-databind</artifactId>
					</exclusion>
					<exclusion>
						<groupId>io.netty</groupId>
						<artifactId>netty-common</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.arrow</groupId>
				<artifactId>arrow-memory-netty</artifactId>
				<version>${arrow.version}</version>
				<exclusions>
					<exclusion>
						<groupId>io.netty</groupId>
						<artifactId>netty-buffer</artifactId>
					</exclusion>
					<exclusion>
						<groupId>io.netty</groupId>
						<artifactId>netty-common</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>com.univocity</groupId>
				<artifactId>univocity-parsers</artifactId>
				<version>2.9.1</version>
			</dependency>
			<dependency>
				<groupId>org.apache.hive</groupId>
				<artifactId>hive-storage-api</artifactId>
				<version>${hive.storage.version}</version>
				<scope>${hive.storage.scope}</scope>
				<exclusions>
					<exclusion>
						<groupId>commons-lang</groupId>
						<artifactId>commons-lang</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>commons-cli</groupId>
				<artifactId>commons-cli</artifactId>
				<version>${commons-cli.version}</version>
			</dependency>
			<dependency>
				<groupId>dev.ludovic.netlib</groupId>
				<artifactId>blas</artifactId>
				<version>${netlib.ludovic.dev.version}</version>
			</dependency>
			<dependency>
				<groupId>dev.ludovic.netlib</groupId>
				<artifactId>lapack</artifactId>
				<version>${netlib.ludovic.dev.version}</version>
			</dependency>
			<dependency>
				<groupId>dev.ludovic.netlib</groupId>
				<artifactId>arpack</artifactId>
				<version>${netlib.ludovic.dev.version}</version>
			</dependency>

			<!-- sdl dependency management -->
			<dependency>
				<groupId>org.apache.spark</groupId>
				<artifactId>spark-core_${scala.minor.version}</artifactId>
				<version>${spark.version}</version>
				<scope>${spark.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.spark</groupId>
				<artifactId>spark-sql_${scala.minor.version}</artifactId>
				<version>${spark.version}</version>
				<scope>${spark.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.spark</groupId>
				<artifactId>spark-catalyst_${scala.minor.version}</artifactId>
				<version>${spark.version}</version>
				<scope>${spark.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.spark</groupId>
				<artifactId>spark-hive_${scala.minor.version}</artifactId>
				<version>${spark.version}</version>
				<scope>${spark.deps.scope}</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-compress</artifactId>
				<version>1.21</version>
			</dependency>
			<dependency>
				<groupId>com.typesafe</groupId>
				<artifactId>config</artifactId>
				<version>${typesafe.config.version}</version>
			</dependency>
			<dependency>
				<groupId>com.github.kxbmap</groupId>
				<artifactId>configs_${scala.minor.version}</artifactId>
				<version>${kxbmap.configs.version}</version>
			</dependency>
			<dependency>
				<groupId>io.swagger</groupId>
				<artifactId>swagger-annotations</artifactId>
				<version>1.5.22</version>
			</dependency>
			<dependency>
				<groupId>org.antlr</groupId>
				<artifactId>ST4</artifactId>
				<version>4.0.4</version>
			</dependency>
			<dependency>
				<groupId>org.antlr</groupId>
				<artifactId>antlr-runtime</artifactId>
				<version>3.4</version>
			</dependency>
			<dependency>
				<groupId>org.apache.poi</groupId>
				<artifactId>poi</artifactId>
				<version>${poi.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.poi</groupId>
				<artifactId>poi-ooxml</artifactId>
				<version>${poi.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>io.smartdatalake</groupId>
				<artifactId>spark-extensions_${scala.minor.version}</artifactId>
				<version>${spark-extensions.version}</version>
			</dependency>

			<!-- TEST dependencies -->
			<dependency>
				<groupId>org.scalatest</groupId>
				<artifactId>scalatest_${scala.minor.version}</artifactId>
				<version>${scalatest.test.version}</version>
				<scope>test</scope>
				<exclusions>
					<exclusion>
						<groupId>org.scala-lang.modules</groupId>
						<artifactId>scala-xml_${scala.minor.version}</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.scalactic</groupId>
				<artifactId>scalactic_${scala.minor.version}</artifactId>
				<version>${scalatest.test.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.scalacheck</groupId>
				<artifactId>scalacheck_${scala.minor.version}</artifactId>
				<version>1.14.3</version>
				<scope>test</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
</project>
