<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.nifi</groupId>
        <artifactId>nifi-nar-bundles</artifactId>
        <version>1.14.0</version>
    </parent>

    <artifactId>nifi-hive-bundle</artifactId>
    <version>1.14.0</version>
    <packaging>pom</packaging>

    <modules>
        <module>nifi-hive-services-api</module>
        <module>nifi-hive-services-api-nar</module>
        <module>nifi-hive-processors</module>
        <module>nifi-hive-nar</module>
        <module>nifi-hive_1_1-processors</module>
        <module>nifi-hive_1_1-nar</module>
        <module>nifi-hive3-processors</module>
        <module>nifi-hive3-nar</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- Explicitly force Netty to 3.7.1 due to CVE-2014-0193 -->
                <groupId>io.netty</groupId>
                <artifactId>netty</artifactId>
                <version>3.7.1.Final</version>
            </dependency>
            <!-- Override snapshot versions of javax.el -->
            <dependency>
                <groupId>org.glassfish</groupId>
                <artifactId>javax.el</artifactId>
                <version>3.0.1-b12</version>
            </dependency>
            <!-- Override Apache Calcite version to avoid deprecated dependencies -->
            <dependency>
                <groupId>org.apache.calcite</groupId>
                <artifactId>calcite-avatica</artifactId>
                <version>${calcite.avatica.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.calcite</groupId>
                <artifactId>calcite-core</artifactId>
                <version>${calcite.version}</version>
            </dependency>
            <!-- Override jackson -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <properties>
        <hive11.version>1.1.1</hive11.version>
        <hive11.hadoop.version>2.6.2</hive11.hadoop.version>
        <hive12.version>1.2.1</hive12.version>
        <hive12.hadoop.version>2.6.2</hive12.hadoop.version>
        <hive3.version>3.1.2</hive3.version>
        <hive.version>${hive3.version}</hive.version>
        <calcite.version>1.27.0</calcite.version>
        <calcite.avatica.version>1.6.0</calcite.avatica.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <excludes combine.children="append">
                        <exclude>src/test/resources/fake.keytab</exclude>
                        <exclude>src/test/resources/krb5.conf</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
