<?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.3</version>
  <packaging>pom</packaging>
  <name>apicurio-registry</name>
  <description>Open Source API &amp; Schema Registry</description>

  <url>https://www.apicur.io/</url>

  <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>

  <developers>
    <developer>
      <id>EricWittmann</id>
      <name>Eric Wittmann</name>
      <email>eric.wittmann@redhat.com</email>
      <organization>Red Hat</organization>
      <roles>
        <role>Project Lead</role>
        <role>Developer</role>
      </roles>
      <timezone>America/New_York</timezone>
    </developer>
    <developer>
      <id>jsenko</id>
      <name>Jakub Senko</name>
      <email>m@jsenko.net</email>
      <organization>Red Hat</organization>
      <roles>
        <role>Developer</role>
      </roles>
      <timezone>Europe/Prague</timezone>
    </developer>
    <developer>
      <id>carlesarnal</id>
      <name>Carles Arnal</name>
      <email>carnalca@redhat.com</email>
      <organization>Red Hat</organization>
      <roles>
        <role>Developer</role>
      </roles>
      <timezone>Europe/Madrid</timezone>
    </developer>
    <developer>
      <id>andreaTP</id>
      <name>Andrea Peruffo</name>
      <email>aperuffo@redhat.com</email>
      <organization>Red Hat</organization>
      <roles>
        <role>Developer</role>
      </roles>
      <timezone>Europe/Lisbon</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/exportConfluent</module>
    <module>utils/protobuf-schema-utilities</module>
    <module>utils/tests</module>
    <module>schema-resolver</module>
    <module>serdes/generic/serde-common</module>
    <module>serdes/generic/serde-common-avro</module>
    <module>serdes/generic/serde-common-jsonschema</module>
    <module>serdes/generic/serde-common-protobuf</module>
    <module>serdes/kafka/serde-kafka-common</module>
    <module>serdes/kafka/avro-serde</module>
    <module>serdes/kafka/protobuf-serde</module>
    <module>serdes/kafka/jsonschema-serde</module>
    <module>serdes/pulsar/avro-serde</module>
    <module>serdes/nats/avro-serde</module>
    <module>distro</module>
    <module>docs</module>
    <module>java-sdk</module>
    <module>java-sdk-v2</module>
    <module>go-sdk</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>

  <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>

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

  <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>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>

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

    <projectRoot>${project.basedir}</projectRoot>

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

    <!--
    WARNING: The following group of dependencies has to be aligned with the corresponding Quarkus version.
    See notes for each entry.
    -->
    <quarkus.version>3.11.1</quarkus.version>
    <!-- Go to `io.quarkiverse.operatorsdk:quarkus-operator-sdk-bom` and then to the parent `io.quarkiverse.operatorsdk:quarkus-operator-sdk-parent`. -->
    <!-- TODO: Fix: Currently, versions are not aligned exactly (3.11.1 vs 3.11.0), because there is no closer version supported by QOSDK. -->
    <quarkus-operator-sdk.version>6.7.1</quarkus-operator-sdk.version>
    <java-operator-sdk.version>4.9.5</java-operator-sdk.version>
    <!-- /WARNING -->

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

    <!-- Schema types -->
    <avro.version>1.12.0</avro.version>
    <json-schema-validator.version>1.5.2</json-schema-validator.version>
    <wire-schema.version>4.9.9</wire-schema.version>
    <okhttp.version>4.12.0</okhttp.version>
    <wire-compiler.version>4.9.9</wire-compiler.version>
    <okio-jvm.version>3.9.1</okio-jvm.version>
    <okio.version>3.9.1</okio.version>
    <okio-fake-file-system.version>3.9.1</okio-fake-file-system.version>
    <icu4j.version>75.1</icu4j.version>
    <protobuf.version>3.25.5</protobuf.version>
    <xmlsec.version>4.0.2</xmlsec.version>
    <protobuf.googleapi.types.version>2.47.0</protobuf.googleapi.types.version>
    <wsdl4j.version>1.6.3</wsdl4j.version>
    <google.truth.extension.version>1.4.4</google.truth.extension.version>

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

    <!-- Confluent API / client -->
    <confluent.version>7.6.2</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>

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

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

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

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

    <!-- OpenAPI -->
    <openapi-diff.version>2.0.1</openapi-diff.version>
    <!-- We need to manually include the version because of dependency issues with snakeyaml -->
    <swagger-parser-v3.version>2.1.23</swagger-parser-v3.version>

    <!-- Dependency versions -->
    <lombok.version>1.18.34</lombok.version>
    <commons-codec.version>1.17.1</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>1.2.5</apicurio-common-app-components.version>
    <kafka-clients.version>3.6.0</kafka-clients.version>
    <debezium.version>2.6.2.Final</debezium.version>
    <pulsar-clients.version>3.3.1</pulsar-clients.version>

    <nats.version>2.20.2</nats.version>
    <snakeyaml.version>2.3</snakeyaml.version>
    <guava.version>33.3.1-jre</guava.version>
    <woodstox-core.version>7.1.0</woodstox-core.version>
    <jgit.version>7.0.0.202409031743-r</jgit.version>
    <awaitility.version>4.2.2</awaitility.version>
    <semver4j.version>5.4.1</semver4j.version>

    <!-- Kafka Connect -->
    <connect.version>3.7.0</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.15</scala.version>

    <!-- Plugin Versions -->
    <version.build.helper.maven.plugin>3.6.0</version.build.helper.maven.plugin>
    <version.compiler.plugin>3.13.0</version.compiler.plugin>
    <version.deploy.plugin>3.1.3</version.deploy.plugin>
    <version.failsafe.plugin>3.5.1</version.failsafe.plugin>
    <version.javadoc.plugin>3.10.1</version.javadoc.plugin>
    <version.source.plugin>3.3.1</version.source.plugin>
    <version.surefire.plugin>3.5.1</version.surefire.plugin>
    <version.jar.plugin>3.4.2</version.jar.plugin>
    <version.checkstyle.plugin>3.5.0</version.checkstyle.plugin>
    <version.properties.plugin>1.2.1</version.properties.plugin>
    <version.dependency.plugin>3.8.0</version.dependency.plugin>
    <version.assembly.plugin>3.7.1</version.assembly.plugin>
    <version.resources.plugin>3.3.1</version.resources.plugin>
    <version.clean.plugin>3.4.0</version.clean.plugin>
    <version.maven-antrun.plugin>3.1.0</version.maven-antrun.plugin>
    <version.spotless>2.43.0</version.spotless>

    <!-- 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>

    <!-- Kiota -->
    <kiota.libs.version>1.7.0</kiota.libs.version>
    <kiota.community.version>0.0.19</kiota.community.version>

    <kiota.version>1.19.1</kiota.version>
    <kiota.timeout>60</kiota.timeout>
    <kiota.base.url>https://github.com/microsoft/kiota/releases/download</kiota.base.url>

    <!-- Test containers version, should be aligned with version used in Quarkus -->
    <test-containers.version>1.20.2</test-containers.version>
    <keycloak.testcontainers.version>1.9.0</keycloak.testcontainers.version>
    <keycloak-admin-client.version>21.1.2</keycloak-admin-client.version>
    <embedded-postgres.version>2.0.7</embedded-postgres.version>
    <strimzi.version>0.105.0</strimzi.version>
    <wiremock-jre8.version>2.35.2</wiremock-jre8.version>
    <strimzi-test-container.version>0.107.0</strimzi-test-container.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-java-sdk</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.apicurio</groupId>
        <artifactId>apicurio-registry-v2-java-sdk</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.apicurio</groupId>
        <artifactId>apicurio-registry-java-sdk-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>
        <type>test-jar</type>
        <scope>test</scope>
      </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>
        <version>${project.version}</version>
        <type>maven-plugin</type>
        <scope>test</scope>
      </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-utils-tests</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-examples</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-serde-common-avro</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.apicurio</groupId>
        <artifactId>apicurio-registry-serde-common-jsonschema</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.apicurio</groupId>
        <artifactId>apicurio-registry-serde-common-protobuf</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.apicurio</groupId>
        <artifactId>apicurio-registry-serde-kafka-common</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.apicurio</groupId>
        <artifactId>apicurio-registry-avro-serde-kafka</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.apicurio</groupId>
        <artifactId>apicurio-registry-jsonschema-serde-kafka</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.apicurio</groupId>
        <artifactId>apicurio-registry-protobuf-serde-kafka</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.apicurio</groupId>
        <artifactId>apicurio-registry-avro-serde-pulsar</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.apicurio</groupId>
        <artifactId>apicurio-registry-avro-serde-nats</artifactId>
        <version>${project.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-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.nats</groupId>
        <artifactId>jnats</artifactId>
        <version>${nats.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.networknt</groupId>
        <artifactId>json-schema-validator</artifactId>
        <version>${json-schema-validator.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>org.jetbrains.kotlinx</groupId>
        <artifactId>kotlinx-serialization-core</artifactId>
        <version>1.7.3</version>
      </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>okhttp</artifactId>
        <version>${okhttp.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>
        <scope>provided</scope>
      </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>org.eclipse.jgit</groupId>
        <artifactId>org.eclipse.jgit</artifactId>
        <version>${jgit.version}</version>
      </dependency>
      <dependency>
        <groupId>org.semver4j</groupId>
        <artifactId>semver4j</artifactId>
        <version>${semver4j.version}</version>
      </dependency>

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

      <!-- OpenAPI -->
      <dependency>
        <groupId>org.openapitools.openapidiff</groupId>
        <artifactId>openapi-diff-core</artifactId>
        <version>${openapi-diff.version}</version>
      </dependency>
      <dependency>
        <groupId>io.swagger.parser.v3</groupId>
        <artifactId>swagger-parser-v3</artifactId>
        <version>${swagger-parser-v3.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>org.json</groupId>
        <artifactId>json</artifactId>
        <version>${org.json.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>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>io.confluent</groupId>
        <artifactId>kafka-schema-registry-client</artifactId>
        <version>${confluent.version}</version>
      </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>org.apache.pulsar</groupId>
        <artifactId>pulsar-functions-api</artifactId>
        <version>${pulsar-clients.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.pulsar</groupId>
        <artifactId>pulsar-client</artifactId>
        <version>${pulsar-clients.version}</version>
      </dependency>
      <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>pulsar</artifactId>
        <version>${test-containers.version}</version>
      </dependency>
      <dependency>
        <groupId>io.debezium</groupId>
        <artifactId>debezium-testing-testcontainers</artifactId>
        <version>${debezium.version}</version>
      </dependency>
      <dependency>
        <groupId>io.strimzi</groupId>
        <artifactId>strimzi-test-container</artifactId>
        <version>${strimzi-test-container.version}</version>
      </dependency>
      <dependency>
        <groupId>io.zonky.test</groupId>
        <artifactId>embedded-postgres</artifactId>
        <version>${embedded-postgres.version}</version>
      </dependency>
      <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-test-common</artifactId>
        <version>${quarkus.version}</version>
      </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-jakarta</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>
      <dependency>
        <groupId>org.awaitility</groupId>
        <artifactId>awaitility</artifactId>
        <version>${awaitility.version}</version>
      </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>io.smallrye</groupId>
          <artifactId>jandex-maven-plugin</artifactId>
          <version>${jandex.version}</version>
        </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>net.alchim31.maven</groupId>
          <artifactId>scala-maven-plugin</artifactId>
          <version>4.9.2</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>
              <goals>
                <goal>add-source</goal>
                <goal>compile</goal>
              </goals>
              <phase>process-resources</phase>
            </execution>
            <execution>
              <id>scala-test-compile</id>
              <goals>
                <goal>add-source</goal>
                <goal>testCompile</goal>
              </goals>
              <phase>process-test-resources</phase>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>io.smallrye</groupId>
        <artifactId>jandex-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>make-index</id>
            <goals>
              <goal>jandex</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <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>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>
          <annotationProcessorPaths>
            <path>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <version>${lombok.version}</version>
            </path>
          </annotationProcessorPaths>
        </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>
        <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>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </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>
            <goals>
              <goal>check</goal>
            </goals>
            <phase>validate</phase>
            <configuration>
              <configLocation>.checkstyle/simple.xml</configLocation>
              <headerLocation>.checkstyle/java.header</headerLocation>
              <suppressionsLocation>.checkstyle/suppressions.xml</suppressionsLocation>
              <includeTestSourceDirectory>true</includeTestSourceDirectory>
              <consoleOutput>true</consoleOutput>
              <failsOnError>true</failsOnError>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>${version.maven-antrun.plugin}</version>
        <executions>
          <execution>
            <goals>
              <goal>run</goal>
            </goals>
            <phase>initialize</phase>
            <configuration>
              <target>
                <mkdir dir="${project.build.directory}/meta"/>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>io.github.git-commit-id</groupId>
        <artifactId>git-commit-id-maven-plugin</artifactId>
        <version>8.0.2</version>
        <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>
        <executions>
          <execution>
            <id>get-the-git-infos</id>
            <goals>
              <goal>revision</goal>
            </goals>
            <phase>initialize</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <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>spotless</id>
      <activation>
        <property>
          <name>!skipSpotless</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.diffplug.spotless</groupId>
            <artifactId>spotless-maven-plugin</artifactId>
            <version>${version.spotless}</version>
            <configuration>
              <formats>
                <format>
                  <includes>
                    <include>*.md</include>
                    <include>.gitignore</include>
                  </includes>
                  <trimTrailingWhitespace/>
                  <endWithNewline/>
                  <indent>
                    <spaces>true</spaces>
                    <spacesPerTab>2</spacesPerTab>
                  </indent>
                </format>
              </formats>
              <java>
                <includes>
                  <include>**/src/main/java/**/*.java</include>
                  <include>**/src/test/java/**/*.java</include>
                </includes>
                <eclipse>
                  <file>${projectRoot}/ide-config/eclipse-format.xml</file>
                </eclipse>
                <importOrder>
                  <file>${projectRoot}/ide-config/eclipse.importorder</file>
                </importOrder>
                <removeUnusedImports/>
                <toggleOffOn/>
              </java>
              <pom>
                <includes>
                  <include>**/pom.xml</include>
                </includes>
                <sortPom>
                  <expandEmptyElements>false</expandEmptyElements>
                </sortPom>
              </pom>
            </configuration>
            <executions>
              <execution>
                <id>format</id>
                <goals>
                  <goal>check</goal>
                </goals>
                <phase>process-sources</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>examples</id>
      <modules>
        <module>examples</module>
      </modules>
    </profile>
    <profile>
      <id>productization</id>
      <modules>
        <module>prod-verifier</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.2.7</version>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <phase>verify</phase>
                <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>
        <repository>
          <id>jgit-repository</id>
          <url>https://repo.eclipse.org/content/groups/releases/</url>
        </repository>
      </repositories>
    </profile>
  </profiles>

</project>
