<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <!--
      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>0.4.1-SNAPSHOT</version>
    </parent>
    <artifactId>nifi-standard-bundle</artifactId>
    <packaging>pom</packaging>
    <description>NiFi Standard Extensions Bundle</description>
    <modules>
        <module>nifi-standard-processors</module>
        <module>nifi-standard-prioritizers</module>
        <module>nifi-standard-reporting-tasks</module>
        <module>nifi-standard-content-viewer</module>
        <module>nifi-standard-nar</module>
    </modules>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-standard-processors</artifactId>
                <version>0.4.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-standard-prioritizers</artifactId>
                <version>0.4.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-standard-reporting-tasks</artifactId>
                <version>0.4.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-standard-content-viewer</artifactId>
                <type>war</type>
                <version>0.4.1-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </dependencyManagement>


</project>
