<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">
    <!--
      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.
    -->
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.nifi</groupId>
        <artifactId>nifi-nar-bundles</artifactId>
        <version>1.9.0</version>
    </parent>
    <artifactId>nifi-kafka-bundle</artifactId>
    <packaging>pom</packaging>

    <properties>
      <kafka8.version>0.8.2.2</kafka8.version>
      <kafka9.version>0.9.0.1</kafka9.version>
      <kafka10.version>0.10.2.2</kafka10.version>
      <kafka11.version>0.11.0.3</kafka11.version>
      <kafka1.0.version>1.0.2</kafka1.0.version>
      <kafka2.0.version>2.0.0</kafka2.0.version>
    </properties>

    <modules>
        <module>nifi-kafka-0-8-processors</module>
        <module>nifi-kafka-0-9-processors</module>
        <module>nifi-kafka-0-10-processors</module>
        <module>nifi-kafka-0-11-processors</module>
        <module>nifi-kafka-1-0-processors</module>
        <module>nifi-kafka-2-0-processors</module>
        <module>nifi-kafka-0-8-nar</module>
        <module>nifi-kafka-0-9-nar</module>
        <module>nifi-kafka-0-10-nar</module>
        <module>nifi-kafka-0-11-nar</module>
        <module>nifi-kafka-1-0-nar</module>
        <module>nifi-kafka-2-0-nar</module>
    </modules>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-kafka-0-8-processors</artifactId>
                <version>1.9.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-kafka-0-10-processors</artifactId>
                <version>1.9.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-kafka-0-9-processors</artifactId>
                <version>1.9.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-kafka-0-11-processors</artifactId>
                <version>1.9.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-kafka-1-0-processors</artifactId>
                <version>1.9.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-kafka-2-0-processors</artifactId>
                <version>1.9.0</version>
            </dependency>
            <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>
        </dependencies>
    </dependencyManagement>
</project>
