<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">
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      contributor license agreements.  See the NOTICE file distributed with
      this work for additional information regarding copyright ownership.
      The ASF licenses this file to You under the Apache License, Version 2.0
      (the "License"); you may not use this file except in compliance with
      the License.  You may obtain a copy of the License at
          http://www.apache.org/licenses/LICENSE-2.0
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.
    -->
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.nifi</groupId>
        <artifactId>nifi-bom</artifactId>
        <version>2.3.0</version>
        <relativePath>../nifi-bom</relativePath>
    </parent>
    <artifactId>nifi-extension-bom</artifactId>
    <packaging>pom</packaging>
    <description>NiFi Extensions Bill of Materials</description>
    <!--
    This NiFi extensions bill of materials purpose is to provide a holistic importable bom which can be used
    by every component that is extending or implementing the functionality of nifi.

    Anything listed inside this bill of materials is considered provided and should not be nor may it be
    overridden by any implementation or extension as the items present in this pom will take precedent on the classpath.

    The top most nar from which all nifi implementations and extensions will extend from is the 'nifi-jetty-nar'
    which will have all these components listed in this POM as included and therefore will be on the classpath.

    Changes in this 'nifi-extension-bom' and the 'nifi-jetty-nar' should be tightly coordinated.  Any changes to items
    in the nifi-jetty-nar should be reflected here with the appropriate version specific update.
    -->
    <dependencyManagement>
        <dependencies>

            <!-- Servlet API required for Jetty and web application -->
            <dependency>
                <groupId>jakarta.servlet</groupId>
                <artifactId>jakarta.servlet-api</artifactId>
                <version>${servlet-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- jetty-schemas -->
            <dependency>
                <groupId>org.eclipse.jetty.toolchain</groupId>
                <artifactId>jetty-schemas</artifactId>
                <version>5.2</version>
                <scope>provided</scope>
            </dependency>
            <!-- Jetty Server and Transitive Dependencies (slf4j-api will be provided from nifi-bom) -->
            <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-http</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-io</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- Jetty EE10 Servlet and dependencies -->
            <dependency>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-servlet</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-security</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-session</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- Jetty EE10 Webapp and deps -->
            <dependency>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-webapp</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-xml</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- Jetty Deploy -->
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-deploy</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- Jetty EE10 Servlets and Deps-->
            <dependency>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-servlets</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-util</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>

            <!-- Jetty EE10 Annotations and Deps -->
            <dependency>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-annotations</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.annotation</groupId>
                <artifactId>jakarta.annotation-api</artifactId>
                <version>2.1.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-plus</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.enterprise</groupId>
                <artifactId>jakarta.enterprise.cdi-api</artifactId>
                <version>4.0.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.inject</groupId>
                <artifactId>jakarta.inject-api</artifactId>
                <version>2.0.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.enterprise</groupId>
                <artifactId>jakarta.enterprise.lang-model</artifactId>
                <version>4.0.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.interceptor</groupId>
                <artifactId>jakarta.interceptor-api</artifactId>
                <version>2.1.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.transaction</groupId>
                <artifactId>jakarta.transaction-api</artifactId>
                <version>2.0.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-jndi</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-plus</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.ow2.asm</groupId>
                <artifactId>asm</artifactId>
                <version>9.7.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.ow2.asm</groupId>
                <artifactId>asm-commons</artifactId>
                <version>9.7.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.ow2.asm</groupId>
                <artifactId>asm-tree</artifactId>
                <version>9.7.1</version>
                <scope>provided</scope>
            </dependency>
            <!-- Jetty EE10 Apache JSP and deps -->
            <dependency>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-apache-jsp</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.mortbay.jasper</groupId>
                <artifactId>apache-jsp</artifactId>
                <version>10.1.31</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.mortbay.jasper</groupId>
                <artifactId>apache-el</artifactId>
                <version>10.1.31</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.el</groupId>
                <artifactId>jakarta.el-api</artifactId>
                <version>5.0.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.servlet.jsp</groupId>
                <artifactId>jakarta.servlet.jsp-api</artifactId>
                <version>3.1.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jdt</groupId>
                <artifactId>ecj</artifactId>
                <version>3.38.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- Jetty EE10 Glassfish JSTL and deps -->
            <dependency>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-glassfish-jstl</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.servlet.jsp.jstl</groupId>
                <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
                <version>3.0.2</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.glassfish.web</groupId>
                <artifactId>jakarta.servlet.jsp.jstl</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency>
            <!-- Jetty ALPN Server -->
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-alpn-server</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- Jetty ALPN Java Server -->
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-alpn-java-server</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- Jetty HTTP2 Server and deps -->
            <dependency>
                <groupId>org.eclipse.jetty.http2</groupId>
                <artifactId>jetty-http2-server</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty.http2</groupId>
                <artifactId>jetty-http2-common</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty.http2</groupId>
                <artifactId>jetty-http2-hpack</artifactId>
                <version>${jetty.version}</version>
                <scope>provided</scope>
            </dependency>

            <!-- Mock Utilities for extensions -->
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-mock</artifactId>
                <version>2.3.0</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.toolchain</groupId>
            <artifactId>jetty-schemas</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-http</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-io</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.ee10</groupId>
            <artifactId>jetty-ee10-servlet</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-session</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.ee10</groupId>
            <artifactId>jetty-ee10-webapp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-xml</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-deploy</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.ee10</groupId>
            <artifactId>jetty-ee10-servlets</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-util</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.ee10</groupId>
            <artifactId>jetty-ee10-annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.annotation</groupId>
            <artifactId>jakarta.annotation-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.ee10</groupId>
            <artifactId>jetty-ee10-plus</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.enterprise</groupId>
            <artifactId>jakarta.enterprise.cdi-api</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.inject</groupId>
            <artifactId>jakarta.inject-api</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.enterprise</groupId>
            <artifactId>jakarta.enterprise.lang-model</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.interceptor</groupId>
            <artifactId>jakarta.interceptor-api</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.transaction</groupId>
            <artifactId>jakarta.transaction-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-jndi</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-plus</artifactId>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm</artifactId>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-commons</artifactId>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-tree</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.ee10</groupId>
            <artifactId>jetty-ee10-apache-jsp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mortbay.jasper</groupId>
            <artifactId>apache-jsp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mortbay.jasper</groupId>
            <artifactId>apache-el</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.el</groupId>
            <artifactId>jakarta.el-api</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.servlet.jsp</groupId>
            <artifactId>jakarta.servlet.jsp-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jdt</groupId>
            <artifactId>ecj</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.ee10</groupId>
            <artifactId>jetty-ee10-glassfish-jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.servlet.jsp.jstl</groupId>
            <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>jakarta.servlet.jsp.jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-alpn-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-alpn-java-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.http2</groupId>
            <artifactId>jetty-http2-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.http2</groupId>
            <artifactId>jetty-http2-common</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.http2</groupId>
            <artifactId>jetty-http2-hpack</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-mock</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <configuration>
                    <ignoredDependencies combine.children="append">
                        <dependency>jakarta.servlet:jakarta.servlet-api</dependency>
                        <dependency>org.eclipse.jetty.toolchain:jetty-schemas</dependency>
                        <dependency>org.eclipse.jetty:jetty-server</dependency>
                        <dependency>org.eclipse.jetty:jetty-http</dependency>
                        <dependency>org.eclipse.jetty:jetty-io</dependency>
                        <dependency>org.eclipse.jetty.ee10:jetty-ee10-servlet</dependency>
                        <dependency>org.eclipse.jetty:jetty-security</dependency>
                        <dependency>org.eclipse.jetty:jetty-session</dependency>
                        <dependency>org.eclipse.jetty.ee10:jetty-ee10-webapp</dependency>
                        <dependency>org.eclipse.jetty:jetty-xml</dependency>
                        <dependency>org.eclipse.jetty:jetty-deploy</dependency>
                        <dependency>org.eclipse.jetty.ee10:jetty-ee10-servlets</dependency>
                        <dependency>org.eclipse.jetty:jetty-util</dependency>
                        <dependency>org.eclipse.jetty.ee10:jetty-ee10-annotations</dependency>
                        <dependency>jakarta.annotation:jakarta.annotation-api</dependency>
                        <dependency>org.eclipse.jetty.ee10:jetty-ee10-plus</dependency>
                        <dependency>jakarta.enterprise:jakarta.enterprise.cdi-api</dependency>
                        <dependency>jakarta.inject:jakarta.inject-api</dependency>
                        <dependency>jakarta.enterprise:jakarta.enterprise.lang-model</dependency>
                        <dependency>jakarta.interceptor:jakarta.interceptor-api</dependency>
                        <dependency>jakarta.transaction:jakarta.transaction-api</dependency>
                        <dependency>org.eclipse.jetty:jetty-jndi</dependency>
                        <dependency>org.eclipse.jetty:jetty-plus</dependency>
                        <dependency>org.ow2.asm:asm:jar</dependency>
                        <dependency>org.ow2.asm:asm-commons</dependency>
                        <dependency>org.ow2.asm:asm-tree</dependency>
                        <dependency>org.eclipse.jetty.ee10:jetty-ee10-apache-jsp</dependency>
                        <dependency>org.mortbay.jasper:apache-jsp</dependency>
                        <dependency>org.mortbay.jasper:apache-el</dependency>
                        <dependency>jakarta.el:jakarta.el-api</dependency>
                        <dependency>jakarta.servlet.jsp:jakarta.servlet.jsp-api</dependency>
                        <dependency>org.eclipse.jdt:ecj</dependency>
                        <dependency>org.eclipse.jetty.ee10:jetty-ee10-glassfish-jstl</dependency>
                        <dependency>jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api</dependency>
                        <dependency>org.glassfish.web:jakarta.servlet.jsp.jstl</dependency>
                        <dependency>org.eclipse.jetty:jetty-alpn-server</dependency>
                        <dependency>org.eclipse.jetty:jetty-alpn-java-server</dependency>
                        <dependency>org.eclipse.jetty.http2:jetty-http2-server</dependency>
                        <dependency>org.eclipse.jetty.http2:jetty-http2-common</dependency>
                        <dependency>org.eclipse.jetty.http2:jetty-http2-hpack</dependency>
                        <dependency>org.apache.nifi:nifi-mock</dependency>
                    </ignoredDependencies>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
