<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>io.apicurio</groupId>
    <artifactId>apicurio-registry</artifactId>
    <version>3.0.0.M2</version>
    <packaging>pom</packaging>
    <name>apicurio-registry</name>

    <url>https://www.apicur.io/</url>
    <description>Open Source API &amp; Schema Registry</description>

    <organization>
        <name>Red Hat</name>
        <url>https://www.redhat.com/</url>
    </organization>

    <licenses>
        <license>
            <name>Apache License Version 2.0</name>
            <url>https://repository.jboss.org/licenses/apache-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <issueManagement>
        <system>GitHub</system>
        <url>https://github.com/apicurio/apicurio-registry/issues</url>
    </issueManagement>

    <scm>
        <connection>scm:git:git@github.com:apicurio/apicurio-registry.git</connection>
        <developerConnection>scm:git:git@github.com:apicurio/apicurio-registry.git</developerConnection>
        <url>scm:git:git@github.com:apicurio/apicurio-registry.git</url>
    </scm>

    <developers>
        <developer>
            <name>Eric Wittmann</name>
            <id>EricWittmann</id>
            <email>eric.wittmann@redhat.com</email>
            <organization>Red Hat</organization>
            <roles>
                <role>Project Lead</role>
                <role>Developer</role>
            </roles>
            <timezone>-5</timezone>
        </developer>
        <developer>
            <name>Jakub Senko</name>
            <id>jsenko</id>
            <email>m@jsenko.net</email>
            <organization>Red Hat</organization>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <name>Aleš Justin</name>
            <id>alesj</id>
            <email>ajustin@redhat.com</email>
            <organization>Red Hat</organization>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <name>Carles Arnal</name>
            <id>carlesarnal</id>
            <email>carnalca@redhat.com</email>
            <organization>Red Hat</organization>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <name>Fabian Martinez Gonzalez</name>
            <id>famartinrh</id>
            <email>famartin@redhat.com</email>
            <organization>Red Hat</organization>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <name>Rishab Prasad</name>
            <id>riprasad</id>
            <email>riprasad@redhat.com</email>
            <organization>Red Hat</organization>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>+4</timezone>
        </developer>
    </developers>

    <modules>
        <module>common</module>
        <module>app</module>
        <module>utils/converter</module>
        <module>utils/kafka</module>
        <module>utils/maven-plugin</module>
        <module>utils/tools</module>
        <module>utils/importexport</module>
        <module>utils/exportV1</module>
        <module>utils/exportConfluent</module>
        <module>utils/protobuf-schema-utilities</module>
        <module>utils/tests</module>
        <module>schema-resolver</module>
        <module>serdes/serde-common</module>
        <module>serdes/avro-serde</module>
        <module>serdes/protobuf-serde</module>
        <module>serdes/jsonschema-serde</module>
        <module>storage</module>
        <module>distro</module>
        <module>docs</module>
        <module>client</module>

        <!-- modules for implementing ArtifactTypeUtilProvider -->
        <module>schema-util/common</module>
        <module>schema-util/json</module>
        <module>schema-util/protobuf</module>
        <module>schema-util/asyncapi</module>
        <module>schema-util/avro</module>
        <module>schema-util/graphql</module>
        <module>schema-util/kconnect</module>
        <module>schema-util/openapi</module>
        <module>schema-util/wsdl</module>
        <module>schema-util/xml</module>
        <module>schema-util/xsd</module>
        <module>schema-util/util-provider</module>

        <module>operator</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
        <timestamp>${maven.build.timestamp}</timestamp>

        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>

        <tar.long.file.mode>gnu</tar.long.file.mode>

        <!-- UI Build Tools -->
        <node.version>16.17.0</node.version>

        <!-- Quarkus Version -->
        <quarkus.version>3.0.4.Final</quarkus.version>

        <!-- Jandex -->
        <jandex.version>1.1.1</jandex.version>

        <!-- Schema types -->
        <avro.version>1.11.2</avro.version>
        <wire-schema.version>4.8.0</wire-schema.version>
        <wire-compiler.version>4.5.0</wire-compiler.version>
        <okio-jvm.version>3.5.0</okio-jvm.version>
        <okio.version>3.5.0</okio.version>
        <okio-fake-file-system.version>3.4.0</okio-fake-file-system.version>
        <icu4j.version>73.2</icu4j.version>
        <protobuf.version>3.24.0</protobuf.version>
        <xmlsec.version>3.0.2</xmlsec.version>
        <protobuf.googleapi.types.version>2.23.0</protobuf.googleapi.types.version>
        <wsdl4j.version>1.6.3</wsdl4j.version>
        <google.truth.extension.version>1.1.5</google.truth.extension.version>

        <!-- Picocli -->
        <picocli.version>4.6.3</picocli.version>

        <!-- Confluent API / client -->
        <confluent.version>7.4.0</confluent.version>

        <!-- Default Quarkus configuration profile -->
        <quarkus.profile>dev</quarkus.profile>

        <!-- Default Skip App build value -->
        <skipAppTests>false</skipAppTests>

        <!-- Default Skip Operator build value -->
        <skipOperatorTests>true</skipOperatorTests>

        <!-- Default Skip UI value -->
        <skipUiBuild>false</skipUiBuild>

        <!-- Skip commit id plugin -->
        <skipCommitIdPlugin>true</skipCommitIdPlugin>

        <!-- Apicurio Data Models (OpenAPI and AsyncAPI support) -->
        <apicurio-data-models.version>2.0.3</apicurio-data-models.version>

        <!-- Apicurio Tenant Manager -->
        <apicurio-tenant-manager.version>0.2.0.Final</apicurio-tenant-manager.version>

        <!-- GraphQL -->
        <graphql.version>21.0</graphql.version>

        <!-- JSON Schema Validator -->
        <org.everit.json.schema.version>1.14.2</org.everit.json.schema.version><!-- TODO unification -->
        <jackson-datatype-json-org.version>2.15.2</jackson-datatype-json-org.version>
        <jackson-dataformat-yaml.version>2.14.2</jackson-dataformat-yaml.version>

        <!-- Dependency versions -->
        <lombok.version>1.18.28</lombok.version>
        <h2.version>1.4.199</h2.version>
        <commons-codec.version>1.16.0</commons-codec.version>
        <jboss-slf4j.version>1.2.1.Final</jboss-slf4j.version>
        <httpclient.version>4.5.14</httpclient.version>
        <apicurio-common-rest-client.version>0.1.18.Final</apicurio-common-rest-client.version>
        <apicurio-common-app-components.version>0.2.1.Final</apicurio-common-app-components.version>
        <sentry.version>1.7.30</sentry.version>
        <kafka-oauth-client.version>0.13.0</kafka-oauth-client.version>
        <kafka-clients.version>3.5.1</kafka-clients.version>
        <snakeyaml.version>2.1</snakeyaml.version>
        <guava.version>32.1.2-jre</guava.version>
        <woodstox-core.version>6.5.1</woodstox-core.version>

        <!-- Kafka Connect -->
        <connect.version>3.5.1</connect.version>

        <!-- Specifications -->
        <annotation-api.version>1.3.5</annotation-api.version>

        <!-- Scala -->
        <version.scala-maven.plugin>4.4.0</version.scala-maven.plugin>
        <scala.version>2.13.11</scala.version>

        <!-- Plugin Versions -->
        <version.compiler.plugin>3.11.0</version.compiler.plugin>
        <version.deploy.plugin>3.1.1</version.deploy.plugin>
        <version.failsafe.plugin>3.1.2</version.failsafe.plugin>
        <version.javadoc.plugin>3.5.0</version.javadoc.plugin>
        <version.source.plugin>3.3.0</version.source.plugin>
        <version.surefire.plugin>3.1.2</version.surefire.plugin>
        <version.jar.plugin>3.3.0</version.jar.plugin>
        <version.checkstyle.plugin>3.3.0</version.checkstyle.plugin>
        <version.properties.plugin>1.2.0</version.properties.plugin>
        <version.dependency.plugin>3.6.0</version.dependency.plugin>
        <version.assembly.plugin>3.6.0</version.assembly.plugin>
        <version.resources.plugin>3.3.1</version.resources.plugin>
        <version.clean.plugin>3.3.1</version.clean.plugin>
        <version.frontend-maven.plugin>1.12.1</version.frontend-maven.plugin>
        <version.maven-antrun.plugin>3.1.0</version.maven-antrun.plugin>

        <!-- Plugin Deps -->
        <version.puppycrawl>8.45.1</version.puppycrawl>

        <!-- Protocol Buffers -->
        <proto-plugin.version>0.6.1</proto-plugin.version>
        <os-maven-plugin.version>1.7.1</os-maven-plugin.version>

        <!-- Test containers version, should be aligned with version used in Quarkus -->
        <test-containers.version>1.18.3</test-containers.version>
        <keycloak.testcontainers.version>1.9.0</keycloak.testcontainers.version>
        <keycloak-admin-client.version>22.0.1</keycloak-admin-client.version>
        <embedded-postgres.version>2.0.4</embedded-postgres.version>
        <strimzi.version>0.104.0</strimzi.version>
        <wiremock-jre8.version>2.35.0</wiremock-jre8.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- This project -->
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-app</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-ui</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-client</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-client-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-utils-kafka</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-utils-kafka</artifactId>
                <version>${project.version}</version>
                <scope>test</scope>
                <type>test-jar</type>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-utils-converter</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-maven-plugin</artifactId>
                <scope>test</scope>
                <version>${project.version}</version>
                <type>maven-plugin</type>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-app</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-storage-sql</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-storage-kafkasql</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-storage-mssql</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-utils-tests</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-storage-sql</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-storage-mssql</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-storage-kafkasql</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-integration-tests</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-serde-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-serdes-avro-serde</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-serdes-protobuf-serde</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-serdes-jsonschema-serde</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-tenant-manager-datamodel</artifactId>
                <version>${apicurio-tenant-manager.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-tenant-manager-client</artifactId>
                <version>${apicurio-tenant-manager.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-utils-import-export</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-protobuf-schema-utilities</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-common-rest-client-vertx</artifactId>
                <version>${apicurio-common-rest-client.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-common-rest-client-jdk</artifactId>
                <version>${apicurio-common-rest-client.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-common-rest-client-common</artifactId>
                <version>${apicurio-common-rest-client.version}</version>
            </dependency>

            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-common-app-components-core</artifactId>
                <version>${apicurio-common-app-components.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-common-app-components-logging</artifactId>
                <version>${apicurio-common-app-components.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-common-app-components-config</artifactId>
                <version>${apicurio-common-app-components.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-common-app-components-config-definitions</artifactId>
                <version>${apicurio-common-app-components.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-common-app-components-config-index</artifactId>
                <version>${apicurio-common-app-components.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-common-app-components-auth</artifactId>
                <version>${apicurio-common-app-components.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-common-app-components-multitenancy</artifactId>
                <version>${apicurio-common-app-components.version}</version>
            </dependency>

            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-provider</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-json</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-protobuf</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-asyncapi</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-avro</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-graphql</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-kconnect</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-openapi</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-wsdl</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-xml</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-util-xsd</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-registry-schema-resolver</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- Quarkus Dependencies -->
            <dependency>
                <groupId>io.quarkus</groupId>
                <artifactId>quarkus-bom</artifactId>
                <version>${quarkus.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-api</artifactId>
                <version>${connect.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-json</artifactId>
                <version>${connect.version}</version>
            </dependency>

            <!-- Third Party Libraries -->
            <dependency><!-- Overrides the version from the Quarkus BOM -->
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>${kafka-clients.version}</version>
            </dependency>
            <dependency>
                <groupId>io.apicurio</groupId>
                <artifactId>apicurio-data-models</artifactId>
                <version>${apicurio-data-models.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.avro</groupId>
                <artifactId>avro</artifactId>
                <version>${avro.version}</version>
            </dependency>
            <dependency>
                <groupId>com.squareup.wire</groupId>
                <artifactId>wire-schema</artifactId>
                <version>${wire-schema.version}</version>
            </dependency>
            <dependency>
                <groupId>com.squareup.wire</groupId>
                <artifactId>wire-compiler</artifactId>
                <version>${wire-compiler.version}</version>
                <!-- Excluding as the latest version is not present and this is not required -->
                <exclusions>
                    <exclusion>
                        <groupId>com.squareup.wire</groupId>
                        <artifactId>wire-grpc-client</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.ibm.icu</groupId>
                <artifactId>icu4j</artifactId>
                <version>${icu4j.version}</version>
            </dependency>
            <dependency>
                <groupId>com.squareup.okio</groupId>
                <artifactId>okio</artifactId>
                <version>${okio.version}</version>
            </dependency>
            <dependency>
                <groupId>com.squareup.okio</groupId>
                <artifactId>okio-jvm</artifactId>
                <version>${okio-jvm.version}</version>
            </dependency>
            <dependency>
                <groupId>com.squareup.okio</groupId>
                <artifactId>okio-fakefilesystem</artifactId>
                <version>${okio-fake-file-system.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
                <version>${protobuf.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java-util</artifactId>
                <version>${protobuf.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.api.grpc</groupId>
                <artifactId>proto-google-common-protos</artifactId>
                <version>${protobuf.googleapi.types.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.santuario</groupId>
                <artifactId>xmlsec</artifactId>
                <version>${xmlsec.version}</version>
            </dependency>
            <dependency>
                <groupId>wsdl4j</groupId>
                <artifactId>wsdl4j</artifactId>
                <version>${wsdl4j.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons-codec.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
            <dependency>
                <groupId>io.sentry</groupId>
                <artifactId>sentry</artifactId>
                <version>${sentry.version}</version><!--$NO-MVN-MAN-VER$-->
            </dependency>

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

            <dependency>
                <groupId>com.github.everit-org.json-schema</groupId>
                <artifactId>org.everit.json.schema</artifactId>
                <version>${org.everit.json.schema.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.datatype</groupId>
                <artifactId>jackson-datatype-json-org</artifactId>
                <version>${jackson-datatype-json-org.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-yaml</artifactId>
                <version>${jackson-dataformat-yaml.version}</version>
            </dependency>

            <dependency>
                <groupId>io.strimzi</groupId>
                <artifactId>kafka-oauth-client</artifactId>
                <version>${kafka-oauth-client.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.woodstox</groupId>
                <artifactId>woodstox-core</artifactId>
                <version>${woodstox-core.version}</version>
            </dependency>

            <!-- Tests -->
            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-avro-serializer</artifactId>
                <version>${confluent.version}</version>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish.jersey.ext</groupId>
                        <artifactId>jersey-bean-validation</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-library</artifactId>
                <version>${scala.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-protobuf-serializer</artifactId>
                <version>${confluent.version}</version>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish.jersey.ext</groupId>
                        <artifactId>jersey-bean-validation</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-json-schema-serializer</artifactId>
                <version>${confluent.version}</version>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish.jersey.ext</groupId>
                        <artifactId>jersey-bean-validation</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-connect-avro-converter</artifactId>
                <version>${confluent.version}</version>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.glassfish.jersey.ext</groupId>
                        <artifactId>jersey-bean-validation</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.strimzi</groupId>
                <artifactId>strimzi-test-container</artifactId>
                <version>${strimzi.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.zonky.test</groupId>
                <artifactId>embedded-postgres</artifactId>
                <version>${embedded-postgres.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.quarkus</groupId>
                <artifactId>quarkus-test-common</artifactId>
                <version>${quarkus.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.github.dasniko</groupId>
                <artifactId>testcontainers-keycloak</artifactId>
                <version>${keycloak.testcontainers.version}</version>
            </dependency>
            <dependency>
                <groupId>org.keycloak</groupId>
                <artifactId>keycloak-admin-client</artifactId>
                <version>${keycloak-admin-client.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.tomakehurst</groupId>
                <artifactId>wiremock-jre8</artifactId>
                <version>${wiremock-jre8.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.truth.extensions</groupId>
                <artifactId>truth-proto-extension</artifactId>
                <version>${google.truth.extension.version}</version>
                <scope>test</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>properties-maven-plugin</artifactId>
                    <version>${version.properties.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${version.compiler.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>${version.source.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${version.javadoc.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${version.failsafe.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${version.surefire.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>${version.deploy.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${version.jar.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${version.checkstyle.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.jboss.jandex</groupId>
                    <artifactId>jandex-maven-plugin</artifactId>
                    <version>${jandex.version}</version>
                    <executions>
                        <execution>
                            <id>make-index</id>
                            <goals>
                                <goal>jandex</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>io.quarkus</groupId>
                    <artifactId>quarkus-maven-plugin</artifactId>
                    <version>${quarkus.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>${version.dependency.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>${version.assembly.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>${version.resources.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>${version.clean.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>com.github.eirslett</groupId>
                    <artifactId>frontend-maven-plugin</artifactId>
                    <version>${version.frontend-maven.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>io.gatling</groupId>
                    <artifactId>gatling-maven-plugin</artifactId>
                    <version>${version.gatling.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>net.alchim31.maven</groupId>
                    <artifactId>scala-maven-plugin</artifactId>
                    <version>4.8.1</version>
                    <configuration>
                        <recompileMode>incremental</recompileMode>
                        <args>
                            <arg>-deprecation</arg>
                            <arg>-explaintypes</arg>
                            <arg>-target:jvm-1.8</arg>
                        </args>
                    </configuration>
                    <executions>
                        <execution>
                            <id>scala-compile-first</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>add-source</goal>
                                <goal>compile</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>scala-test-compile</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>add-source</goal>
                                <goal>testCompile</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>set-system-properties</goal>
                        </goals>
                        <configuration>
                            <properties>
                                <property>
                                    <name>quarkus.profile</name>
                                    <value>${quarkus.profile}</value>
                                </property>
                                <property>
                                    <name>skipUiBuild</name>
                                    <value>${skipUiBuild}</value>
                                </property>
                                <property>
                                    <name>skipAppTests</name>
                                    <value>${skipAppTests}</value>
                                </property>
                                <property>
                                    <name>skipOperatorTests</name>
                                    <value>${skipOperatorTests}</value>
                                </property>
                            </properties>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <showDeprecation>false</showDeprecation>
                    <showWarnings>false</showWarnings>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <additionalDependencies>
                        <additionalDependency>
                            <groupId>jakarta.annotation</groupId>
                            <artifactId>jakarta.annotation-api</artifactId>
                            <version>${annotation-api.version}</version>
                        </additionalDependency>
                    </additionalDependencies>
                    <failOnError>false</failOnError>
                    <failOnWarnings>false</failOnWarnings>
                    <source>${maven.compiler.source}</source>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>com.puppycrawl.tools</groupId>
                        <artifactId>checkstyle</artifactId>
                        <version>${version.puppycrawl}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <configuration>
                            <configLocation>.checkstyle/simple.xml</configLocation>
                            <headerLocation>.checkstyle/java.header</headerLocation>
                            <suppressionsLocation>.checkstyle/suppressions.xml</suppressionsLocation>
                            <includeTestSourceDirectory>true</includeTestSourceDirectory>
                            <encoding>UTF-8</encoding>
                            <consoleOutput>true</consoleOutput>
                            <failsOnError>true</failsOnError>
                        </configuration>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>${version.maven-antrun.plugin}</version>
                <executions>
                   <execution>
                       <phase>initialize</phase>
                       <configuration>
                           <target>
                               <mkdir dir="${project.build.directory}/meta"/>
                           </target>
                       </configuration>
                       <goals>
                           <goal>run</goal>
                       </goals>
                   </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>io.github.git-commit-id</groupId>
                <artifactId>git-commit-id-maven-plugin</artifactId>
                <version>6.0.0</version>
                <executions>
                    <execution>
                        <id>get-the-git-infos</id>
                        <goals>
                            <goal>revision</goal>
                        </goals>
                        <phase>initialize</phase>
                    </execution>
                </executions>
                <configuration>
                    <skip>${skipCommitIdPlugin}</skip>
                    <generateGitPropertiesFile>true</generateGitPropertiesFile>
                    <generateGitPropertiesFilename>${project.build.directory}/meta/git.properties</generateGitPropertiesFilename>
                    <commitIdGenerationMode>full</commitIdGenerationMode>
                    <includeOnlyProperties>
                        <includeOnlyProperty>^git.build.(time|version)$</includeOnlyProperty>
                        <includeOnlyProperty>^git.commit.id.(abbrev|full)$</includeOnlyProperty>
                    </includeOnlyProperties>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>ui</id>
            <activation>
                <property>
                    <name>!skipUiBuild</name>
                </property>
            </activation>
            <modules>
                <module>ui</module>
            </modules>
        </profile>
        <profile>
            <id>sql</id>
            <modules>
                <module>storage/sql</module>
            </modules>
        </profile>
        <profile>
            <id>mssql</id>
            <modules>
                <module>storage/mssql</module>
            </modules>
        </profile>
        <profile>
            <id>kafkasql</id>
            <modules>
                <module>storage/kafkasql</module>
            </modules>
        </profile>
        <profile>
            <id>prod</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <quarkus.profile>prod</quarkus.profile>
            </properties>
        </profile>
        <profile>
            <id>integration-tests</id>
            <modules>
                <module>integration-tests</module>
            </modules>
        </profile>
        <profile>
            <id>skip-auth-test</id>
            <activation>
                <os>
                    <family>Windows</family>
                </os>
            </activation>
             <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <excludes>
                                <exclude>**/*SimpleAuthTest.java</exclude>
                                <exclude>**/*MojoAuthTest.java</exclude>
                                <exclude>**/*SimpleAuthIT.java</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>release</id>
            <distributionManagement>
                <snapshotRepository>
                    <id>ossrh</id>
                    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
                </snapshotRepository>
            </distributionManagement>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <extensions>true</extensions>
                        <configuration>
                            <serverId>ossrh</serverId>
                            <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                            <autoReleaseAfterClose>true</autoReleaseAfterClose>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>3.1.0</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                                <configuration>
                                    <!-- Prevent `gpg` from using pinentry programs -->
                                    <gpgArguments>
                                        <arg>--pinentry-mode</arg>
                                        <arg>loopback</arg>
                                    </gpgArguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>java8</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <configuration>
                            <additionalJOption>-Xdoclint:none</additionalJOption>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!-- For deploying to github packages -->
        <profile>
            <id>github</id>
            <distributionManagement>
                <repository>
                    <id>github</id>
                    <name>GitHub Packages</name>
                    <url>https://maven.pkg.github.com/Apicurio/apicurio-registry</url>
                </repository>
            </distributionManagement>
        </profile>
        <!-- 
            conditional repo to be excluded in productization 
            build in prod with:
            mvn ... -P '!external_repos'
        -->
        <profile>
            <id>external_repos</id>
            <activation>
                <property>
                    <!-- fake property, assumed never set -->
                    <name>!skipDefault</name>
                </property>
            </activation>
            <repositories>
                <repository>
                    <id>confluent</id>
                    <name>Confluent</name>
                    <url>https://packages.confluent.io/maven/</url>
                </repository>
                <repository>
                    <id>jitpack.io</id>
                    <url>https://jitpack.io</url>
                </repository>
            </repositories>
        </profile>
    </profiles>

</project>
