<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>io.quarkus.platform</groupId>
    <artifactId>quarkus-platform-config</artifactId>
    <version>2.13.8.Final</version> <!-- The base upstream platform version -->
    <relativePath></relativePath>
  </parent>
  <groupId>com.redhat.quarkus.platform</groupId>
  <artifactId>quarkus-platform-config</artifactId>
  <version>2.13.8.Final-redhat-00004</version>
  <packaging>pom</packaging>
  <properties>
    <quarkus.version>2.13.8.Final-redhat-00004</quarkus.version> <!-- the Quarkus core version, to be replaced with the productized one when it's available -->
    <quarkus.upstream.version>2.13.8.Final</quarkus.upstream.version> <!-- the upstream Quarkus core version that will be recorded in the product platform metadata -->

    <camel-quarkus.version>2.13.3.redhat-00008</camel-quarkus.version>
    <camel-quarkus-test-list.version>2.13.3</camel-quarkus-test-list.version>

    <camel-quarkus-support-overrides.version>${camel-quarkus.version}</camel-quarkus-support-overrides.version> <!-- for now we are using the 2.7.1 support overrides list, as the latest available for Camel -->

    <quarkus-qpid-jms.version>0.38.0.redhat-00010</quarkus-qpid-jms.version>

    <opentelemetry.version>1.17.0.redhat-00001</opentelemetry.version>

    <optaplanner-quarkus.version>8.33.0.Final-redhat-00004</optaplanner-quarkus.version>

    <quarkus-platform-bom-generator.version>0.0.86</quarkus-platform-bom-generator.version>

    <!-- The following property enables generation of the .domino directory containing Domino CLI SBOM generation config -->
    <generate-domino-cli-config>true</generate-domino-cli-config>
    <!-- This property limits the set of extensions to be included in the SBOMs to only those that have 'redhat-support' in their descriptors -->
    <manifest.supported-extensions-only>true</manifest.supported-extensions-only>
    <!-- Indicates what configuration from the dependenciesToBuild element should be taken into account when generating SBOMs.
         Allowed values are:
         - INCLUSIONS - the default if not configured, means to include artifacts into SBOMs that are configured in dependenciesToBuild
                        but ignore the exclusions. This would mean recording complete dependency trees of supported extensions, including
                        dependencies that were not productized.
        - ALL - respect the dependenciesToBuild configuration, taking into account both inclusions and exclusions.
        - NONE - to completely ignore the dependenciesToBuild configuration.
    -->
    <manifest.apply-dependencies-to-build-config>INCLUSIONS</manifest.apply-dependencies-to-build-config>
  </properties>

  <!-- Indy Maven repo to be able to resolve the Camel Quarkus support overrides metadata -->
  <repositories>
    <repository>
      <id>indy-static</id>
      <url>https://indy.psi.redhat.com/api/content/maven/group/static/</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>indy-static</id>
      <url>https://indy.psi.redhat.com/api/content/maven/group/static/</url>
    </pluginRepository>
  </pluginRepositories>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>io.quarkus</groupId>
          <artifactId>quarkus-platform-bom-maven-plugin</artifactId>
          <version>${quarkus-platform-bom-generator.version}</version>
          <extensions>true</extensions>
          <dependencies>
            <dependency>
              <groupId>io.quarkus</groupId>
              <artifactId>quarkus-domino-api</artifactId>
              <version>${quarkus-platform-bom-generator.version}</version>
              <exclusions>
                <exclusion>
                  <groupId>org.gradle</groupId>
                  <artifactId>gradle-tooling-api</artifactId>
                </exclusion>
              </exclusions>
            </dependency>
          </dependencies>
          <configuration>
            <platformConfig>
              <upstreamQuarkusCoreVersion>${quarkus.upstream.version}</upstreamQuarkusCoreVersion>
              <universal>
                <bom>com.redhat.quarkus:quarkus-universe-bom:${project.version}</bom>
              </universal>
              <core>
                <metadataOverrideFiles>
                  <file>${resourcesdir}/core/extensions-support-overrides.json</file>
                </metadataOverrideFiles>
                <dependencyManagement combine.children="append">
                  <!-- enforced for Fireball due to the alpha qualifier been dropped during the productization -->
                  <dependency>io.opentelemetry:opentelemetry-sdk-logs:${opentelemetry.version}</dependency>
                  <dependency>io.opentelemetry:opentelemetry-semconv:${opentelemetry.version}</dependency>
                  <dependency>io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:${opentelemetry.version}</dependency>
                  <dependency>io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations-support:${opentelemetry.version}</dependency>
                  <dependency>io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:${opentelemetry.version}</dependency>
                  <dependency>io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-semconv:${opentelemetry.version}</dependency>
                </dependencyManagement>
                <dependenciesToBuild>
                  <!-- include dependencies by groupId -->
                  <includeGroupIds>
                    <groupId>org.hibernate.common</groupId>
                  </includeGroupIds>
                  <!-- include dependencies by keys -->
                  <includeKeys>
                    <key>org.bitbucket.b_c:jose4j</key>
                    <key>io.quarkus:quarkus-devtools-base-codestarts</key>
                    <key>io.quarkus:quarkus-devtools-codestarts</key>
                    <key>io.quarkus:quarkus-devtools-message-writer</key>
                  </includeKeys>
                  <!-- include specific versions of dependencies -->
                  <includeArtifacts>
                    <artifact>io.quarkus:quarkus-maven-plugin:${quarkus.version}</artifact>
                    <artifact>io.quarkus:quarkus-extension-maven-plugin:${quarkus.version}</artifact>
                    <artifact>io.quarkus:quarkus-bom-quarkus-platform-properties::properties:${quarkus.version}</artifact>
                    <artifact>io.quarkus:quarkus-bom-quarkus-platform-descriptor:${quarkus.version}:json:${quarkus.version}</artifact>
                    <artifact>io.quarkus:quarkus-extension-processor:${quarkus.version}</artifact>
                    <!-- TODO
                    * svm
                    * hibernate-search-engine
                    -->
                  </includeArtifacts>
                  <excludeGroupIds>
                    <groupId>com.github.docker-java</groupId>
                    <groupId>org.springframework</groupId>
                  </excludeGroupIds>
                  <excludeKeys>
                    <key>software.amazon.awssdk:aws-sdk-java-pom::pom</key>
                    <key>software.amazon.awssdk:bom::pom</key>
                  </excludeKeys>
                </dependenciesToBuild>
                <sbom>
                  <productInfo>
                    <!-- PST product definition -->
                    <id>quarkus-2</id>
                    <stream>quarkus-2.13</stream>
                    <!-- cpe>cpe:/a:redhat:quarkus:2.13::el8</cpe -->
                    <description>Red Hat Build of Quarkus - Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM</description>
                    <releaseNotes>
                      <type>Patch</type>
                      <title>Red Hat Build of Quarkus ${project.version}</title>
                      <aliases>
                        <alias>RHBQ</alias>
                        <alias>Quarkus</alias>
                        <alias>Fireball</alias>
                      </aliases>
                      <properties>
                        <product-name>Red Hat Build of Quarkus</product-name>
                        <product-version>${project.version}</product-version>
                      </properties>
                    </releaseNotes>
                  </productInfo>
                  <supportedExtensionsOnly>${manifest.supported-extensions-only}</supportedExtensionsOnly>
                  <applyDependenciesToBuildConfig>${manifest.apply-dependencies-to-build-config}</applyDependenciesToBuildConfig>
                </sbom>
              </core>
              <members>
                <member>
                  <name>OptaPlanner</name>
                  <hidden>false</hidden>
                  <metadataOverrideFiles>
                    <file>${resourcesdir}/optaplanner/extensions-support-overrides.json</file>
                  </metadataOverrideFiles>
                  <dependenciesToBuild>
                    <excludeArtifacts>
                      <artifact>org.openrewrite:rewrite-bom::pom:7.34.2</artifact>
                      <artifact>org.openrewrite.recipe:rewrite-recipe-bom::pom:1.13.1</artifact>
                    </excludeArtifacts>
                  </dependenciesToBuild>
                  <sbom>
                    <productInfo>
                      <!-- PST product definition -->
                      <id>rhbop-8</id>
                      <stream>rhbop-8</stream>
                      <description>Red Hat build of OptaPlanner 8</description>
                      <releaseNotes>
                        <type>Patch</type>
                        <title>Red Hat build of OptaPlanner ${project.version}</title>
                        <properties>
                          <product-name>Red Hat build of OptaPlanner 8</product-name>
                          <product-version>${project.version}</product-version>
                        </properties>
                      </releaseNotes>
                    </productInfo>
                    <supportedExtensionsOnly>${manifest.supported-extensions-only}</supportedExtensionsOnly>
                    <applyDependenciesToBuildConfig>${manifest.apply-dependencies-to-build-config}</applyDependenciesToBuildConfig>
                  </sbom>
                </member>
                <member>
                  <name>Kogito</name>
                  <hidden>true</hidden>
                </member>
                <member>
                  <name>QpidJMS</name>
                  <hidden>false</hidden>
                  <metadataOverrideFiles>
                    <file>${resourcesdir}/qpid-jms/extensions-support-overrides.json</file>
                  </metadataOverrideFiles>
                  <sbom>
                    <productInfo>
                      <!-- PST product definition -->
                      <id>amq-cl-2</id>
                      <stream>amq-cl-2</stream>
                      <description>A-MQ Clients 2</description>
                      <releaseNotes>
                        <type>Patch</type>
                        <title>A-MQ Clients ${project.version}</title>
                        <properties>
                          <product-name>A-MQ Clients 2</product-name>
                          <product-version>${project.version}</product-version>
                        </properties>
                      </releaseNotes>
                    </productInfo>
                    <supportedExtensionsOnly>${manifest.supported-extensions-only}</supportedExtensionsOnly>
                    <applyDependenciesToBuildConfig>${manifest.apply-dependencies-to-build-config}</applyDependenciesToBuildConfig>
                  </sbom>
                </member>
                <member>
                  <name>Cassandra</name>
                  <hidden>true</hidden>
                </member>
                <member>
                  <name>AmazonServices</name>
                  <hidden>true</hidden>
                </member>
                <member>
                  <name>Camel</name>
                  <hidden>false</hidden>
                  <metadataOverrideArtifacts>
                    <artifact>org.apache.camel.quarkus:camel-quarkus-product::json:${camel-quarkus-support-overrides.version}</artifact>
	          </metadataOverrideArtifacts>
                  <dependencyManagement combine.children="append">
                    <!-- Override dependency to fix CEQ-6769 -->
                    <dependency>jakarta.jms:jakarta.jms-api:2.0.3.redhat-00004</dependency>
                  </dependencyManagement>
                  <sbom>
                    <productInfo>
                      <!-- PST product definition -->
                      <id>rhint-camel-quarkus-2</id>
                      <stream>rhint-camel-quarkus-2.13</stream>
                      <description>Red Hat Integration Camel Quarkus</description>
                      <releaseNotes>
                        <type>Patch</type>
                        <title>Red Hat Integration Camel Quarkus ${project.version}</title>
                        <properties>
                          <product-name>Red Hat Integration Camel Quarkus</product-name>
                          <product-version>${project.version}</product-version>
                        </properties>
                      </releaseNotes>
                    </productInfo>
                    <supportedExtensionsOnly>${manifest.supported-extensions-only}</supportedExtensionsOnly>
                    <applyDependenciesToBuildConfig>${manifest.apply-dependencies-to-build-config}</applyDependenciesToBuildConfig>
                  </sbom>
                </member>
                <member>
                  <name>Hazelcast</name>
                  <hidden>true</hidden>
                </member>
                <member>
                  <name>Debezium-Outbox</name>
                  <hidden>true</hidden>
                </member>
                <member>
                  <name>Blaze-Persistence</name>
                  <hidden>true</hidden>
                </member>
                <member>
                  <name>GoogleCloudServices</name>
                  <hidden>true</hidden>
                </member>
              </members>
              <bomGenerator>
                <!-- Version constraint preferences during alignment -->
                <!-- This allows to favor versions that match a certain expression even if the default Maven version comparator would do otherwise -->
                <versionConstraintPreferences>
                  <prefer>*redhat-*</prefer>
                </versionConstraintPreferences>
                <disableGroupAlignmentToPreferredVersions>true</disableGroupAlignmentToPreferredVersions>
                <excludedDependencies combine.children="append">
                  <dependency>org.optaplanner:optaplanner-distribution-internal::zip</dependency>
                  <dependency>org.optaplanner:optaplanner-docs::zip</dependency>
                </excludedDependencies>
              </bomGenerator>
            </platformConfig>

            <!-- Config to dependencies-to-build report -->
            <dependenciesToBuild>
              <!-- exclude dependencies by groupId -->
              <excludeGroupIds>
                <groupId>org.junit</groupId>
                <groupId>org.testcontainers</groupId>
                <groupId>org.junit.jupiter</groupId>
                <groupId>org.junit.platform</groupId>
                <groupId>org.mockito</groupId>
                <groupId>org.jetbrains.kotlin</groupId>
                <groupId>org.jetbrains.kotlinx</groupId>
                <groupId>org.apache.maven</groupId>
                <groupId>org.apache.maven.plugin-tools</groupId>
                <groupId>org.apache.maven.resolver</groupId>
                <groupId>org.apache.maven.shared</groupId>
                <groupId>org.apache.maven.wagon</groupId>
                <groupId>org.jacoco</groupId>
                <groupId>org.bouncycastle</groupId>
                <groupId>org.eclipse.sisu</groupId>
                <groupId>com.h2database</groupId>
                <groupId>org.apache.derby</groupId>
                <!-- Oracle JDBC - https://issues.redhat.com/browse/QUARKUS-1164 -->
                <groupId>com.oracle.database.jdbc</groupId>
                <!-- DB2 JDBC - treat it the same way as Oracle JDBC -->
                <groupId>com.ibm.db2</groupId>
                <!-- MongoDB driver - https://issues.redhat.com/browse/QUARKUS-2358  -->
                <groupId>org.mongodb</groupId>
                <!-- shrinkwrap -->
                <groupId>org.jboss.shrinkwrap</groupId>
                <groupId>org.jboss.shrinkwrap.resolver</groupId>
                <groupId>org.jboss.shrinkwrap.descriptors</groupId>
                <!-- arquillian -->
                <groupId>org.jboss.arquillian</groupId>
              </excludeGroupIds>
              <!-- exclude dependencies specifying their keys -->
              <excludeKeys>
                <!-- testing related -->
                <key>io.quarkus:quarkus-junit4-mock</key>
                <key>io.strimzi:strimzi-test-container</key>
                <key>org.infinispan:infinispan-server-testdriver-core</key>
                <!-- DEV mode related -->
                <key>io.smallrye:smallrye-graphql-ui-graphiql</key>
                <key>io.quarkus:quarkus-devservices-derby</key>
                <key>io.quarkus:quarkus-jdbc-derby</key>
                <key>io.quarkus:quarkus-devservices-h2</key>
                <key>io.quarkus:quarkus-jdbc-db2</key>
                <key>io.quarkus:quarkus-jdbc-h2</key>
                <!-- MSSQL JDBC - https://issues.redhat.com/browse/QUARKUS-1304 -->
                <key>com.microsoft.sqlserver:mssql-jdbc</key>
                <key>com.microsoft.azure:adal4j</key>
                <!-- quarkus-bom-test is not productized -->
                <key>io.quarkus:quarkus-bom-test:*:pom</key>
                <!-- quarkus-grpc-codegen - not used in runtime -->
                <key>io.quarkus:quarkus-grpc-codegen</key>
                <!-- CRaC is experimental feature -->
                <key>io.github.crac:org-crac</key>
                <!-- HAL is experimental feature -->
                <key>io.quarkus:quarkus-hal</key>
                <!-- OpenTelemetry MDC is not supported -->
                <key>io.quarkus:quarkus-vertx-latebound-mdc-provider</key>
                <!-- Available since 4.3 as preview feature, Quarkus does not plan to use it now -->
                <key>io.vertx:vertx-uri-template</key>
                <!-- already in the MRRC with a version w/o the redhat suffix -->
                <key>org.ow2:ow2::pom</key>

                <!-- CEQ exclusions -->
                <!-- Azure & related dependencies productization pending: https://issues.redhat.com/browse/CEQ-1068 -->
                <key>com.azure:azure-sdk-parent:pom</key>
                <key>com.azure:azure-client-sdk-parent:pom</key>
                <key>com.azure:azure-core</key>
                <key>com.azure:azure-identity</key>
                <key>com.azure:azure-storage-common</key>
                <key>com.azure:azure-storage-internal-avro</key>
                <key>com.azure:azure-storage-blob</key>
                <key>com.azure:azure-storage-common</key>
                <key>com.azure:azure-storage-queue</key>
                <key>com.azure:azure-core-http-vertx</key>
                <key>io.projectreactor:reactor-bom::pom</key>
                <!-- 100+ Google Cloud BOMs mostly for unspported functionality referenced by aggregator BOMs -->
                <key>com.google.cloud:*:*:pom</key>
                <key>com.google.http-client:*:*:pom</key>
                <!-- Ant build. No project exists in PNC -->
                <key>net.java.dev.jna:jna-platform</key>
                <!-- org.asynchttpclient productization pending https://issues.redhat.com/browse/CEQ-2313 -->
                <key>org.asynchttpclient:async-http-client-project</key>
                <key>org.asynchttpclient:async-http-client</key>
                <!-- Spring is not to be productized -->
                <key>org.springframework:spring-jdbc</key>
                <key>org.springframework:spring-orm</key>
                <key>org.springframework:spring-tx</key>
                <!-- Temporary pending fix for https://github.com/apache/camel-quarkus/issues/4065 -->
                <key>xalan:xalan</key>
              </excludeKeys>
              <!-- exclude specific versions of dependencies -->
              <excludeArtifacts>
                <!-- excluding these since it'd be too expensive to build and we enforce a different version in the quarkus-bom -->
                <artifact>com.fasterxml.jackson:jackson-bom::pom:2.12.3</artifact>
                <artifact>com.fasterxml.jackson:jackson-bom::pom:2.12.7</artifact>
                <!-- Have no history of productization in PNC, excluding for Fireball -->
                <artifact>org.codehaus.plexus:plexus-utils:3.3.0</artifact>
                <!-- The following POM shouldn't be used at all (not supported by Vert.X prod) this POM is used as a BOM in SmallRye -->
                <artifact>io.vertx:vertx-stack-depchain::pom:4.3.4</artifact>
                <!-- the following artifacts cannot be built -->
                <artifact>org.jboss:jboss-parent:12</artifact>
                <artifact>org.jboss:jboss-parent:18</artifact>
                <!-- exclusion only for ER3 as graal sdk bug is fixed in Quarkus 2.13.4.Final -->
                <artifact>org.graalvm.sdk:graal-sdk:22.2.0</artifact>
                <!-- excluding problematic parent POMs -->
                <artifact>com.google.errorprone:error_prone_parent::pom:2.15.0</artifact>
                <artifact>org.codehaus.plexus:plexus::pom:5.1</artifact>

                <!-- CEQ exclusions -->
                <!-- io.quarkiverse libraries that are only used in the CEQ test suite -->
                <artifact>io.quarkiverse.amazonservices:quarkus-amazon-services-bom::pom:1.3.1</artifact>
                <artifact>io.quarkiverse.amazonservices:quarkus-amazon-services-parent::pom:1.3.1</artifact>
                <artifact>io.quarkiverse.artemis:quarkus-artemis-bom::pom:2.0.1</artifact>
                <artifact>io.quarkiverse.artemis:quarkus-artemis-parent::pom:2.0.1</artifact>
                <!-- Potential misalignments in camel-parent & cxf-parent. io.netty:* dependencies are managed via quarkus-bom anyway -->
                <artifact>io.netty:netty-bom::pom:4.1.79.Final</artifact>
                <artifact>io.netty:netty-bom::pom:4.1.85.Final</artifact>
                <!-- Optaplanner is not a supported extension -->
                <artifact>org.optaplanner:optaplanner-bom::pom:8.23.0.Final</artifact>
                <artifact>org.optaplanner:optaplanner-parent::pom:8.23.0.Final</artifact>
              </excludeArtifacts>
            </dependenciesToBuild>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-platform-bom-maven-plugin</artifactId>
        <inherited>false</inherited>
        <executions>
          <execution>
            <id>generate-platform-project</id>
            <phase>process-resources</phase>
            <goals>
              <goal>generate-platform-project</goal>
            </goals>
          </execution>
          <execution>
            <id>build-platform-project</id>
            <phase>process-resources</phase>
            <goals>
              <goal>invoke-platform-project</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>depsToBuild</id>
      <activation>
        <property>
          <name>depsToBuild</name>
        </property>
      </activation>
      <build>
        <defaultGoal>clean process-resources</defaultGoal>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>io.quarkus</groupId>
              <artifactId>quarkus-platform-bom-maven-plugin</artifactId>
              <configuration>
                <redhatSupported>true</redhatSupported>
                <logCodeRepos>true</logCodeRepos>
                <logModulesToBuild>true</logModulesToBuild> <!-- log dependencies in GAV format instead of GACTV -->
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <!--
       | This profile enables SBOM generation for each platform member.
       | This is still a work in progress.
       | The SBOMs can be found under target/sbom directory.
    -->
    <profile>
      <id>sbom</id>
      <activation>
        <property>
          <name>sbom</name>
        </property>
      </activation>
      <build>
        <defaultGoal>clean process-resources</defaultGoal>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>io.quarkus</groupId>
              <artifactId>quarkus-platform-bom-maven-plugin</artifactId>
              <configuration>
                <manifest>true</manifest>
                <redhatSupported>${manifest.supported-extensions-only}</redhatSupported>
                <includeNonManaged>true</includeNonManaged>
                <excludeParentPoms>true</excludeParentPoms>
                <!-- legacyScmLocator>true</legacyScmLocator -->
                <warnOnMissingScm>true</warnOnMissingScm>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>mavenRepoZip</id>
      <activation>
        <property>
          <name>mavenRepoZip</name>
        </property>
      </activation>
      <build>
        <defaultGoal>clean process-resources</defaultGoal>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>io.quarkus</groupId>
              <artifactId>quarkus-platform-bom-maven-plugin</artifactId>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
  </profiles>
</project>
