<?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</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-docker</module>
        <module>nifi-system-tests</module>
        <module>minifi</module>
        <module>nifi-stateless</module>
        <module>nifi-registry</module>
        <module>nifi-toolkit</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>nifi-1.14.0-RC1</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.69</org.bouncycastle.version>
        <org.slf4j.version>1.7.30</org.slf4j.version>
        <ranger.version>2.1.0</ranger.version>
        <jetty.version>9.4.42.v20210604</jetty.version>
        <jackson.version>2.12.3</jackson.version>
        <nifi.groovy.version>2.5.6</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>
        <jersey.version>2.33</jersey.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>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </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>
    </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.2</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
                            -Duser.language=${user.language}
                            -Duser.country=${user.country}
                            -Duser.timezone=${user.timezone}
                            -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.minifi:*</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 -->
                    </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>
        <profile>
            <!-- Run "mvn clean verify -P owasp" to generate dependency-check-report.html in the target directory -->
            <!-- Report results require detailed analysis to determine whether the vulnerability impacts the application -->
            <id>owasp</id>
            <properties>
                <skipTests>true</skipTests>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.owasp</groupId>
                        <artifactId>dependency-check-maven</artifactId>
                        <version>6.1.5</version>
                        <executions>
                            <execution>
                                <inherited>false</inherited>
                                <goals>
                                    <goal>aggregate</goal>
                                </goals>
                                <configuration>
                                    <suppressionFiles>nifi-dependency-check-maven/suppressions.xml</suppressionFiles>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
