<?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</groupId>
        <artifactId>apache</artifactId>
        <version>23</version>
        <relativePath />
    </parent>
    <groupId>org.apache.nifi</groupId>
    <artifactId>nifi</artifactId>
    <version>1.14.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <description>Apache NiFi is an easy to use, powerful, and reliable system to process and distribute data.</description>
    <modules>
        <module>nifi-commons</module>
        <module>nifi-api</module>
        <module>nifi-framework-api</module>
        <module>nifi-server-api</module>
        <module>nifi-bootstrap</module>
        <module>nifi-mock</module>
        <module>nifi-nar-bundles</module>
        <module>nifi-assembly</module>
        <module>nifi-docs</module>
        <module>nifi-maven-archetypes</module>
        <module>nifi-external</module>
        <module>nifi-toolkit</module>
        <module>nifi-docker</module>
        <module>nifi-system-tests</module>
  </modules>
    <url>https://nifi.apache.org</url>
    <organization>
        <name>Apache NiFi Project</name>
        <url>https://nifi.apache.org/</url>
    </organization>
    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0</url>
        </license>
    </licenses>
    <mailingLists>
        <mailingList>
            <name>Dev</name>
            <subscribe>dev-subscribe@nifi.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@nifi.apache.org</unsubscribe>
            <post>dev@nifi.apache.org</post>
            <archive>https://mail-archives.apache.org/mod_mbox/nifi-dev</archive>
        </mailingList>
        <mailingList>
            <name>Users</name>
            <subscribe>users-subscribe@nifi.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@nifi.apache.org</unsubscribe>
            <post>users@nifi.apache.org</post>
            <archive>https://mail-archives.apache.org/mod_mbox/nifi-users</archive>
        </mailingList>
        <mailingList>
            <name>Commits</name>
            <subscribe>commits-subscribe@nifi.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@nifi.apache.org</unsubscribe>
            <post>commits@nifi.apache.org</post>
            <archive>https://mail-archives.apache.org/mod_mbox/nifi-commits</archive>
        </mailingList>
    </mailingLists>
    <scm>
        <connection>scm:git:git://git.apache.org/nifi.git</connection>
        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/nifi.git</developerConnection>
        <url>https://git-wip-us.apache.org/repos/asf?p=nifi.git</url>
        <tag>HEAD</tag>
    </scm>
    <issueManagement>
        <system>JIRA</system>
        <url>https://issues.apache.org/jira/browse/NIFI</url>
    </issueManagement>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.surefire.arguments />
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <inceptionYear>2014</inceptionYear>
        <okhttp.version>4.9.1</okhttp.version>
        <org.bouncycastle.version>1.68</org.bouncycastle.version>
        <org.slf4j.version>1.7.30</org.slf4j.version>
        <ranger.version>2.1.0</ranger.version>
        <jetty.version>9.4.35.v20201120</jetty.version>
        <jackson.version>2.9.10</jackson.version>
        <jackson-databind.version>2.9.10.8</jackson-databind.version>
        <nifi.registry.version>0.8.0</nifi.registry.version>
        <nifi.groovy.version>2.5.4</nifi.groovy.version>
        <surefire.version>2.22.2</surefire.version>
        <!-- The Hadoop version used by nifi-hadoop-libraries-nar and any NARs that depend on it, other NARs that need
            a specific version should override this property, or use a more specific property like abc.hadoop.version -->
        <hadoop.version>3.3.0</hadoop.version>
        <ozone.version>1.0.0</ozone.version>
        <gcs.version>2.1.5</gcs.version>
        <aspectj.version>1.9.6</aspectj.version>
    </properties>

    <repositories>
        <repository>
            <id>central</id>
            <!-- This should be at top, it makes maven try the central repo
                first and then others and hence faster dep resolution -->
            <name>Maven Repository</name>
            <url>https://repo1.maven.org/maven2</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>apache-repo</id>
            <name>Apache Repository</name>
            <url>https://repository.apache.org/content/repositories/releases</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>jcenter</id>
            <url>https://jcenter.bintray.com</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
        <repository>
            <id>Shibboleth</id>
            <name>Shibboleth</name>
            <url>https://build.shibboleth.net/nexus/content/repositories/releases/</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>gcs-maven-central-mirror</id>
            <!--
              Google Mirror of Maven Central, placed first so that it's used instead of flaky Maven Central.
              See https://storage-download.googleapis.com/maven-central/index.html
            -->
            <name>GCS Maven Central mirror</name>
            <url>https://maven-central.storage-download.googleapis.com/repos/central/data/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
        </pluginRepository>
        <pluginRepository>
            <id>bintray</id>
            <name>Groovy Bintray</name>
            <url>https://dl.bintray.com/groovy/maven</url>
            <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <dependencyManagement>
        <dependencies>
            <!-- The following dependency management entries exist because these are jars
            that live in the top-level lib directory and will be present in the parent-first
            classloading of all child nars.  Therefore we dont want child nars using different
            versions anyway.-->

            <!-- javax.servlet-api handling this explicitly  Must be in root lib -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- jetty-schemas-3.1.jar handling this explicitly  Must be in root lib -->
            <dependency>
                <groupId>org.eclipse.jetty.toolchain</groupId>
                <artifactId>jetty-schemas</artifactId>
                <version>3.1</version>
                <scope>provided</scope>
            </dependency>
            <!-- logback-classic, logback-core, log4j-over-slf4j, jul-to-slf4j,jcl-over-slf4j,slf4j-api handling this explicitly  Must be in root lib -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.3</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${org.slf4j.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>log4j-over-slf4j</artifactId>
                <version>${org.slf4j.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jul-to-slf4j</artifactId>
                <version>${org.slf4j.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${org.slf4j.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${org.slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${org.slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bouncycastle</groupId>
                <artifactId>bcprov-jdk15on</artifactId>
                <version>${org.bouncycastle.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bouncycastle</groupId>
                <artifactId>bcpkix-jdk15on</artifactId>
                <version>${org.bouncycastle.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bouncycastle</groupId>
                <artifactId>bcpg-jdk15on</artifactId>
                <version>${org.bouncycastle.version}</version>
            </dependency>

            <!-- These junit/mockito/groovy/spock/hamcrest dependencies are here to encourage consistent unit test library usage -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.1</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>2.28.2</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-all</artifactId>
                <version>${nifi.groovy.version}</version>
                <type>pom</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-test</artifactId>
                <version>${nifi.groovy.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.spockframework</groupId>
                <artifactId>spock-core</artifactId>
                <version>1.3-groovy-2.5</version>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <!-- exclude transitive groovy dependencies to force spock to use the the managed groovy dependencies
                        inherited from the parent pom -->
                        <groupId>org.codehaus.groovy</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-all</artifactId>
                <version>1.3</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers</artifactId>
                <version>1.11.3</version>
                <scope>test</scope>
            </dependency>
            <!-- These Jetty dependencies are required for the Jetty Web Server all nars extend from it so we dont want this getting overriden -->
            <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-servlet</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>org.eclipse.jetty</groupId>
                <artifactId>jetty-deploy</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-annotations</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>apache-jsp</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>apache-jstl</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjrt</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <fork>true</fork>
                        <optimize>true</optimize>
                        <showDeprecation>true</showDeprecation>
                        <showWarnings>true</showWarnings>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-compiler</artifactId>
                    <version>3.4.0-01</version>
                    <extensions>true</extensions>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-batch</artifactId>
                    <version>${nifi.groovy.version}-01</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <systemPropertyVariables>
                            <java.awt.headless>true</java.awt.headless>
                        </systemPropertyVariables>
                        <includes>
                            <include>**/*Test.class</include>
                            <include>**/Test*.class</include>
                            <include>**/*Spec.class</include>
                        </includes>
                        <excludes>
                            <exclude>**/*ITSpec.class</exclude>
                        </excludes>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                        <argLine combine.children="append">-Xmx1G
                            -Djava.net.preferIPv4Stack=true
                            ${maven.surefire.arguments}
                            -Dfile.encoding=UTF-8</argLine>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <!-- Force surefire to use JUnit -->
                            <groupId>org.apache.maven.surefire</groupId>
                            <artifactId>surefire-junit4</artifactId>
                            <version>${surefire.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <tarLongFileMode>gnu</tarLongFileMode>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>jaxb2-maven-plugin</artifactId>
                    <version>2.3.1</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.6.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <configuration>
                        <failOnError>false</failOnError>
                        <quiet>true</quiet>
                        <show>private</show>
                        <encoding>UTF-8</encoding>
                        <quiet>true</quiet>
                        <javadocVersion>1.8</javadocVersion>
                        <additionalJOption>-J-Xmx512m</additionalJOption>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <configuration>
                        <useReleaseProfile>true</useReleaseProfile>
                        <releaseProfiles>apache-release</releaseProfiles>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <goals>deploy</goals>
                        <tagNameFormat>@{project.artifactId}-@{project.version}</tagNameFormat>
                        <pushChanges>false</pushChanges>
                        <localCheckout>true</localCheckout>
                    </configuration>
                    <executions>
                        <execution>
                            <id>default</id>
                            <goals>
                                <goal>perform</goal>
                            </goals>
                            <configuration>
                                <pomFileName>pom.xml</pomFileName>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>rpm-maven-plugin</artifactId>
                    <version>2.1.5</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>1.4</version>
                </plugin>
                <plugin>
                    <groupId>org.antlr</groupId>
                    <artifactId>antlr3-maven-plugin</artifactId>
                    <version>3.5.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>3.1.0</version>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>8.29</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <executions>
                    <!-- Only run for tests -->
                    <execution>
                        <id>groovy-tests</id>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>
                            <compilerId>groovy-eclipse-compiler</compilerId>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.codehaus.groovy</groupId>
                        <artifactId>groovy-eclipse-compiler</artifactId>
                        <version>3.4.0-01</version>
                    </dependency>
                    <dependency>
                        <groupId>org.codehaus.groovy</groupId>
                        <artifactId>groovy-eclipse-batch</artifactId>
                        <version>${nifi.groovy.version}-01</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-nar-maven-plugin</artifactId>
                <version>1.3.1</version>
                <extensions>true</extensions>
                <configuration>
                    <enforceDocGeneration>true</enforceDocGeneration>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <version>1.6.8</version>
                <extensions>true</extensions>
                <configuration>
                    <stagingProgressTimeoutMinutes>15</stagingProgressTimeoutMinutes>
                    <serverId>repository.apache.org</serverId>
                    <nexusUrl>https://repository.apache.org/</nexusUrl>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0-M3</version>
                <executions>
                    <execution>
                        <id>enforce-maven</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireSameVersions>
                                    <plugins>
                                        <plugin>org.apache.maven.plugins:maven-surefire-plugin</plugin>
                                        <plugin>org.apache.maven.plugins:maven-failsafe-plugin</plugin>
                                        <plugin>org.apache.maven.plugins:maven-surefire-report-plugin</plugin>
                                    </plugins>
                                </requireSameVersions>
                                <requireMavenVersion>
                                    <!-- We do not test this value so we should probably make it something fairly recent -->
                                    <version>3.1.1</version>
                                </requireMavenVersion>
                            </rules>
                        </configuration>
                    </execution>
                    <execution>
                        <id>enforce-no-snapshots</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireReleaseDeps>
                                    <message>Other than org apache nifi components themselves no snapshot dependencies are allowed</message>
                                    <!-- If we want to only enforce this for nifi release itself we should add 'onlyWhenRelease' and remove 'failWhenParentIsSnapshot' element -->
                                    <failWhenParentIsSnapshot>false</failWhenParentIsSnapshot>
                                    <excludes>
                                        <exclude>org.apache.nifi:*</exclude>
                                        <exclude>org.apache.nifi.registry:*</exclude>
                                    </excludes>
                                </requireReleaseDeps>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution>
                    <execution>
                        <id>enforce-banned-dependencies</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <bannedDependencies>
                                    <excludes>
                                        <!-- Cat-X Deps -->
                                        <exclude>org.json:json:*:*:compile</exclude>
                                        <exclude>c3p0:c3p0:*:*:compile</exclude>
                                        <!-- Versions of JSR305 before 3.0.1 are not allowed https://github.com/findbugsproject/findbugs/issues/128 -->
                                        <exclude>com.google.code.findbugs:jsr305:*:*:compile</exclude>
                                    </excludes>
                                    <includes>
                                        <!-- Versions of JSR305 after 3.0.1 are allowed https://github.com/findbugsproject/findbugs/issues/128 -->
                                        <include>com.google.code.findbugs:jsr305:[3.0.0,)</include>
                                    </includes>
                                </bannedDependencies>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <configuration>
                    <checkstyleRules>
                        <module name="Checker">
                            <property name="charset" value="UTF-8" />
                            <property name="severity" value="warning" />
                            <!-- Checks for whitespace -->
                            <!-- See http://checkstyle.sf.net/config_whitespace.html -->
                            <module name="FileTabCharacter">
                                <property name="eachLine" value="true" />
                            </module>
                            <module name="LineLength">
                                <!-- needs extra, because Eclipse formatter
                                    ignores the ending left brace -->
                                <property name="max" value="200" />
                                <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://" />
                            </module>
                            <module name="TreeWalker">
                                <module name="RegexpSinglelineJava">
                                    <property name="format" value="\s+$" />
                                    <property name="message" value="Line has trailing whitespace." />
                                </module>
                                <module name="RegexpSinglelineJava">
                                    <property name="format" value="[@]see\s+[{][@]link" />
                                    <property name="message" value="Javadoc @see does not need @link: pick one or the other." />
                                </module>
                                <module name="OuterTypeFilename" />
                                <module name="AvoidStarImport" />
                                <module name="UnusedImports">
                                    <property name="processJavadoc" value="true" />
                                </module>
                                <module name="NoLineWrap" />
                                <module name="LeftCurly" />
                                <module name="RightCurly" />
                                <module name="RightCurly">
                                    <property name="option" value="alone_or_singleline" />
                                    <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT" />
                                </module>
                                <module name="SeparatorWrap">
                                    <property name="tokens" value="DOT" />
                                    <property name="option" value="nl" />
                                </module>
                                <module name="SeparatorWrap">
                                    <property name="tokens" value="COMMA" />
                                    <property name="option" value="EOL" />
                                </module>
                                <module name="PackageName">
                                    <property name="format" value="^[a-z]+(\.[a-z][a-zA-Z0-9]*)*$" />
                                </module>
                                <module name="MethodTypeParameterName">
                                    <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
                                </module>
                                <module name="MethodParamPad" />
                                <module name="OperatorWrap">
                                    <property name="option" value="NL" />
                                    <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, QUESTION, SL, SR, STAR " />
                                </module>
                                <module name="AnnotationLocation">
                                    <property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF" />
                                </module>
                                <module name="AnnotationLocation">
                                    <property name="tokens" value="VARIABLE_DEF" />
                                    <property name="allowSamelineMultipleAnnotations" value="true" />
                                </module>
                                <module name="NonEmptyAtclauseDescription" />
                                <module name="JavadocMethod">
                                    <property name="allowMissingParamTags" value="true" />
                                    <property name="allowMissingReturnTag" value="true" />
                                    <property name="allowedAnnotations" value="Override,Test,BeforeClass,AfterClass,Before,After" />
                                </module>
                                <module name="SingleLineJavadoc" />
                            </module>
                        </module>
                    </checkstyleRules>
                    <violationSeverity>warning</violationSeverity>
                    <includeTestSourceDirectory>true</includeTestSourceDirectory>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <consoleOutput>true</consoleOutput>
                    <useIdeaDefaultExcludes>true</useIdeaDefaultExcludes>
                    <excludes>
                        <exclude>nb-configuration.xml</exclude> <!-- courtesy excludes for netbeans users -->
                        <exclude>nbactions.xml</exclude> <!-- courtesy excludes for netbeans users -->
                        <exclude>DEPENDENCIES</exclude> <!-- auto generated file by apache's maven config while building sources.zip -->
                        <exclude>.github/PULL_REQUEST_TEMPLATE.md</exclude> <!-- PR Template for GitHub that does not have a mechanism of including comments -->
                        <exclude>.github/workflows/ci-workflow.yml</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <!-- Performs execution of Integration Tests using the Maven
                FailSafe Plugin. The view of integration tests in this context are those
                tests interfacing with external sources and services requiring additional
                resources or credentials that cannot be explicitly provided. Also appropriate
                for tests which depend on inter-thread and/or network or having timing
                considerations which could make the tests brittle on various environments.-->
            <id>integration-tests</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>integration-test</goal>
                                    <goal>verify</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <!-- Checks style and licensing requirements. This is a good
                idea to run for contributions and for the release process. While it would
                be nice to run always these plugins can considerably slow the build and have
                proven to create unstable builds in our multi-module project and when building
                using multiple threads. The stability issues seen with Checkstyle in multi-module
                builds include false-positives and false negatives. -->
            <id>contrib-check</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.rat</groupId>
                        <artifactId>apache-rat-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>verify</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>check-style</id>
                                <phase>verify</phase>
                                <configuration>
                                    <encoding>UTF-8</encoding>
                                    <excludes>**/generated-sources/**/*</excludes>
                                    <sourceDirectories>
                                        <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                                        <sourceDirectory>${project.build.testSourceDirectory}</sourceDirectory>
                                    </sourceDirectories>
                                </configuration>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <!-- This profile will disable DocLint which performs strict
                JavaDoc processing which was introduced in JDK 8. These are technically errors
                in the JavaDoc which we need to eventually address. However, if a release
                is performed using JDK 8 or newer, the JavaDoc generation would fail. By activating
                this profile when running on JDK 8 or newer we can ensure the JavaDocs continue to
                generate successfully -->
            <id>disable-doclint</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <configuration>
                                <additionalparam>-Xdoclint:none</additionalparam>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
            <!-- This profile, activating when compiling on Java versions above 1.8, provides configuration changes to
                 allow NiFi to be compiled on those JDKs. -->
            <id>jigsaw</id>
            <activation>
                <jdk>(1.8,)</jdk>
            </activation>
            <properties>
                <maven.compiler.source>11</maven.compiler.source>
                <maven.compiler.target>11</maven.compiler.target>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.jvnet.jaxb2.maven2</groupId>
                            <artifactId>maven-jaxb2-plugin</artifactId>
                            <version>0.14.0</version>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                        <version>2.3.0</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-core</artifactId>
                        <version>2.3.0</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-impl</artifactId>
                        <version>2.3.0</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.activation</groupId>
                        <artifactId>javax.activation</artifactId>
                        <version>1.2.0</version>
                    </dependency>
                    <dependency>
                        <groupId>javax.annotation</groupId>
                        <artifactId>javax.annotation-api</artifactId>
                        <version>1.3.2</version>
                    </dependency>
                </dependencies>
            </dependencyManagement>
        </profile>
        <!-- The following profiles are here as a convenience for folks that
            want to build against vendor-specific distributions of the various Hadoop
            ecosystem libraries. These will alter which dependencies are sourced in a
            manner that can adjust the correct LICENSE and NOTICE requirements for any
            affected jar and the resulting assembly overall. These L&N impacts are not
            automatically handled by the build process and are the responsibility of
            those creating and using the resulting binary artifacts. -->
        <profile>
            <!-- This profile adds the Hortonworks repository for resolving
                Hortonworks Data Platform (HDP) artifacts for the Hadoop bundles -->
            <id>hortonworks</id>
            <repositories>
                <repository>
                    <id>hortonworks-releases</id>
                    <name>Hortonworks Repository</name>
                    <url>https://repo.hortonworks.com/content/repositories/releases/</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                        <checksumPolicy>warn</checksumPolicy>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                        <updatePolicy>never</updatePolicy>
                        <checksumPolicy>fail</checksumPolicy>
                    </snapshots>
                </repository>
                <repository>
                    <id>hortonworks-jetty</id>
                    <name>Hortonworks Jetty Repository</name>
                    <url>https://repo.hortonworks.com/content/repositories/jetty-hadoop/</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                        <checksumPolicy>warn</checksumPolicy>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                        <updatePolicy>never</updatePolicy>
                        <checksumPolicy>fail</checksumPolicy>
                    </snapshots>
                </repository>
            </repositories>
            <properties>
                <!-- Vendor-specific version number included here as default,
                    should be overridden on the command-line <hadoop.version>2.7.1.2.4.0.0-169</hadoop.version> -->
            </properties>
        </profile>
        <profile>
            <!-- This profile will add the MapR repository for resolving
                MapR Hadoop artifacts for the Hadoop bundles -->
            <id>mapr</id>
            <repositories>
                <repository>
                    <id>mapr-releases</id>
                    <name>MapR Repository</name>
                    <url>https://repository.mapr.com/maven/</url>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </repository>
            </repositories>
            <properties>
                <!-- Vendor-specific version number included here as default,
                    should be overridden on the command-line <hadoop.version>2.7.0-mapr-1602</hadoop.version> -->
            </properties>
        </profile>
        <profile>
            <!-- This profile will add the Cloudera repository for resolving
                Cloudera Distribution of Hadoop (CDH) artifacts for the Hadoop bundles -->
            <id>cloudera</id>
            <repositories>
                <repository>
                    <id>cloudera-repo</id>
                    <name>Cloudera Repository</name>
                    <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <properties>
                <!-- Vendor-specific version number included here as default,
                    should be overridden on the command-line <hadoop.version>2.6.0-cdh5.8.1</hadoop.version> -->
            </properties>
        </profile>
    </profiles>
</project>