Uploaded image for project: 'Quarkus'
  1. Quarkus
  2. QUARKUS-6913

Avoid importing BOMs managing extensions managed by BOMs with higher preferences

XMLWordPrintable

      This is a fix for an issue of redundant BOM imports when a registry client is configured with a specific offering value and a user selected an extension included in the offering and an extension that is not included in the offering but managed in the same BOM as the extension from the offering.
      The issue can be reproduced with recent CLI versions (3.27+) by configuring a registry client as
      registries:

      • registry.quarkus.redhat.com:
        offering: redhat
      • registry.quarkus.io

      and running a command such as
      quarkus create -x quarkus-rest,qute-web

      The resulting project configuration will look like
      ...
      <quarkus-plugin.version>3.20.2.SP1-redhat-00003</quarkus-plugin.version>
      <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
      <quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
      <quarkus.platform.version>3.20.2</quarkus.platform.version>
      <skipITs>true</skipITs>
      <surefire-plugin.version>3.5.2</surefire-plugin.version>
      </properties>

      <dependencyManagement>
      <dependencies>
      <dependency>
      <groupId>com.redhat.quarkus.platform</groupId>
      <artifactId>${quarkus.platform.artifact-id}</artifactId>
      <version>3.20.2.SP1-redhat-00003</version>
      <type>pom</type>
      <scope>import</scope>
      </dependency>
      <dependency>
      <groupId>${quarkus.platform.group-id}</groupId>
      <artifactId>${quarkus.platform.artifact-id}</artifactId>
      <version>${quarkus.platform.version}</version>
      <type>pom</type>
      <scope>import</scope>
      </dependency>
      </dependencies>
      </dependencyManagement>

      <dependencies>
      <dependency>
      <groupId>io.quarkiverse.qute.web</groupId>
      <artifactId>quarkus-qute-web</artifactId>
      </dependency>
      <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-rest</artifactId>
      </dependency>
      ...

      With this change the generated POM will look like
      ...
      <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
      <quarkus.platform.group-id>com.redhat.quarkus.platform</quarkus.platform.group-id>
      <quarkus.platform.version>3.20.2.SP1-redhat-00003</quarkus.platform.version>
      <skipITs>true</skipITs>
      <surefire-plugin.version>3.5.2</surefire-plugin.version>
      </properties>

      <dependencyManagement>
      <dependencies>
      <dependency>
      <groupId>${quarkus.platform.group-id}</groupId>
      <artifactId>${quarkus.platform.artifact-id}</artifactId>
      <version>${quarkus.platform.version}</version>
      <type>pom</type>
      <scope>import</scope>
      </dependency>
      </dependencies>
      </dependencyManagement>

      <dependencies>
      <dependency>
      <groupId>io.quarkiverse.qute.web</groupId>
      <artifactId>quarkus-qute-web</artifactId>
      </dependency>
      <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-rest</artifactId>
      </dependency>
      ...

      This change also introduces a check for a specific BOM import ordering in tests.
      FYI @jedla97, this issue came up in our previous discussions.

              jmartisk@redhat.com Jan Martiska
              msochure@redhat.com Miroslav Sochurek
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: