<?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 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <artifactId>bom-frameworks</artifactId>
    <packaging>pom</packaging>

    <parent>
        <groupId>net.microfalx.bom</groupId>
        <artifactId>bom</artifactId>
        <version>1.0.19</version>
    </parent>

    <name>BOM :: Frameworks</name>

    <properties>

        <!-- Runtime -->

        <apache.lucene.version>10.4.0</apache.lucene.version>
        <apache.tika.version>3.3.0</apache.tika.version>
        <apache.pulsar.version>4.2.1</apache.pulsar.version>
        <apache.kafka.version>4.3.0</apache.kafka.version>
        <apache.activemq.version>6.2.5</apache.activemq.version>
        <apache.activemq.artemis.version>2.54.0</apache.activemq.artemis.version>
        <!-- Do not use the latest Groovy version as it breaks compatibility with some frameworks -->
        <apache.groovy.version>4.0.32</apache.groovy.version>

        <azure.cloud.version>1.3.7</azure.cloud.version>
        <google.cloud.version>26.83.0</google.cloud.version>
        <awssdk.version>2.44.12</awssdk.version>

        <opentelemetry.version>1.62.0</opentelemetry.version>
        <prometheus.metrics.version>1.6.1</prometheus.metrics.version>
        <rest-assured.version>5.5.7</rest-assured.version>
        <rsocket.version>1.1.5</rsocket.version>
        <projectreactor.version>2025.0.5</projectreactor.version>
        <!-- Do not use the latest Jetty version as it breaks compatibility with some frameworks -->
        <jetty.version>12.0.35</jetty.version>
        <jetty-ee10.version>12.0.35</jetty-ee10.version>
        <!-- Do not use the latest Jersey version as it breaks compatibility with some frameworks -->
        <jersey.version>3.1.11</jersey.version>
        <!-- Do not use hibernate 7 yet as Spring Boot does not support it -->
        <hibernate.version>6.6.51.Final</hibernate.version>
        <zipkin.brave.version>6.3.1</zipkin.brave.version>
        <zipkin.reporter.version>3.5.3</zipkin.reporter.version>
        <infinispan.version>16.1.4</infinispan.version>
        <kotlin.version>2.2.21</kotlin.version>
        <kotlin.coroutines.version>1.11.0</kotlin.coroutines.version>
        <kotlin.serialization.version>1.11.0</kotlin.serialization.version>
        <graphql-java.version>22.3</graphql-java.version>
        <djl.version>0.36.0</djl.version>
        <djl.llama.version>0.28.0</djl.llama.version>

    </properties>

    <dependencyManagement>
        <dependencies>

            <!-- Internal BOMs -->

            <dependency>
                <groupId>net.microfalx.bom</groupId>
                <artifactId>bom-base</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- 3rd party BOMs -->

            <dependency>
                <groupId>io.zipkin.brave</groupId>
                <artifactId>brave-bom</artifactId>
                <version>${zipkin.brave.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.zipkin.reporter2</groupId>
                <artifactId>zipkin-reporter-bom</artifactId>
                <version>${zipkin.reporter.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.groovy</groupId>
                <artifactId>groovy-bom</artifactId>
                <version>${apache.groovy.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.hibernate.orm</groupId>
                <artifactId>hibernate-platform</artifactId>
                <version>${hibernate.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.rest-assured</groupId>
                <artifactId>rest-assured-bom</artifactId>
                <version>${rest-assured.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.opentelemetry</groupId>
                <artifactId>opentelemetry-bom</artifactId>
                <version>${opentelemetry.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.prometheus</groupId>
                <artifactId>prometheus-metrics-bom</artifactId>
                <version>${prometheus.metrics.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.pulsar</groupId>
                <artifactId>pulsar-bom</artifactId>
                <version>${apache.pulsar.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-bom</artifactId>
                <version>${apache.activemq.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>artemis-bom</artifactId>
                <version>${apache.activemq.artemis.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-bom</artifactId>
                <version>${jetty.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-bom</artifactId>
                <version>${jetty-ee10.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${jersey.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.infinispan</groupId>
                <artifactId>infinispan-bom</artifactId>
                <version>${infinispan.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-bom</artifactId>
                <version>${kotlin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.jetbrains.kotlinx</groupId>
                <artifactId>kotlinx-coroutines-bom</artifactId>
                <version>${kotlin.coroutines.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.jetbrains.kotlinx</groupId>
                <artifactId>kotlinx-serialization-bom</artifactId>
                <version>${kotlin.serialization.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.rsocket</groupId>
                <artifactId>rsocket-bom</artifactId>
                <version>${rsocket.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.projectreactor</groupId>
                <artifactId>reactor-bom</artifactId>
                <version>${projectreactor.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>libraries-bom</artifactId>
                <version>${google.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>bom</artifactId>
                <version>${awssdk.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.azure</groupId>
                <artifactId>azure-sdk-bom</artifactId>
                <version>${azure.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>ai.djl</groupId>
                <artifactId>bom</artifactId>
                <version>${djl.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Frameworks without BOM -->

            <!-- Apache Lucene -->

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-core</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-queries</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-codecs</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-queryparser</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-suggest</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-facet</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-highlighter</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-misc</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-backward-codecs</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <!-- Apache Tika -->

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-core</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-code-module</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-digest-commons</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-pdf-module</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-xml-module</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-xmp-commons</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-html-module</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-text-module</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-langdetect-optimaize</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <!-- Apache Kafka -->

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-api</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-basic-auth-extension</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-file</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-json</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-mirror</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-mirror-client</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-runtime</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-transforms</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>generator</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>${apache.kafka.version}</version>
                <classifier>test</classifier>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-log4j-appender</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-metadata</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-raft</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-server</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-server-common</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-server-common</artifactId>
                <version>${apache.kafka.version}</version>
                <classifier>test</classifier>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-shell</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-storage</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-storage-api</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-streams</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-streams-scala_2.12</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-streams-scala_2.13</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-streams-test-utils</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-tools</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka_2.12</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka_2.12</artifactId>
                <version>${apache.kafka.version}</version>
                <classifier>test</classifier>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka_2.13</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka_2.13</artifactId>
                <version>${apache.kafka.version}</version>
                <classifier>test</classifier>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>trogdor</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <!-- Other -->

            <dependency>
                <groupId>ai.djl.llama</groupId>
                <artifactId>llama</artifactId>
                <version>${djl.llama.version}</version>
            </dependency>

            <!-- Selenium Grid needs an older version -->

            <dependency>
                <groupId>com.graphql-java</groupId>
                <artifactId>graphql-java</artifactId>
                <version>${graphql-java.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <configuration>
                    <ruleSet>
                        <!-- Specific packages -->
                        <rules>
                            <!-- From Base Module -->
                            <rule>
                                <groupId>com.squareup.okhttp3</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>5.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>net.serenity-bdd</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>5.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>io.minio</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>8.6.*</version>
                                    </ignoreVersion>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>9.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>org.rocksdb</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>10.3.*</version>
                                    </ignoreVersion>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>10.4.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>org.testcontainers</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>2.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>net.bytebuddy</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>.*-jdk5</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <!-- From Frameworks Module -->
                            <rule>
                                <groupId>org.hibernate.orm</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>7.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>org.apache.groovy</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>5.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>org.glassfish.jersey</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>4.0.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>org.eclipse.jetty</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>12.1.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>org.jetbrains.kotlin</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>2.3.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>io.rest-assured</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>6.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                            <rule>
                                <groupId>org.testcontainers</groupId>
                                <ignoreVersions>
                                    <ignoreVersion>
                                        <type>regex</type>
                                        <version>2.*</version>
                                    </ignoreVersion>
                                </ignoreVersions>
                            </rule>
                        </rules>
                    </ruleSet>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
