quarkusio/quarkus · error · MojoExecutionException

Multiple platforms were matching the requested platform BOM

Error message

Multiple platforms were matching the requested platform BOM coordinates ${bomGroupId}:${bomArtifactId}:${bomVersion}: - ${bom}

What it means

This MojoExecutionException is thrown by QuarkusProjectMojoBase.getSingleMatchingBom when the resolved platform catalog contains more than one platform BOM matching the requested (possibly partial) bomGroupId:bomArtifactId:bomVersion coordinates. Because the tooling cannot pick one deterministically, it lists all matching BOMs in the message and fails. It protects against silently choosing the wrong platform.

Source

Thrown at devtools/maven/src/main/java/io/quarkus/maven/QuarkusProjectMojoBase.java:296

                    }
                }
            }
        }
        if (matches != null) {
            StringWriter buf = new StringWriter();
            buf.append("Multiple platforms were matching the requested platform BOM coordinates ");
            buf.append(bomGroupId == null ? "*" : bomGroupId).append(':');
            buf.append(bomArtifactId == null ? "*" : bomArtifactId).append(':');
            buf.append(bomVersion == null ? "*" : bomVersion).append(": ");
            try (BufferedWriter writer = new BufferedWriter(buf)) {
                for (ArtifactCoords bom : matches) {
                    writer.newLine();
                    writer.append("- ").append(bom.toString());
                }
            } catch (IOException e) {
                //
            }
            throw new MojoExecutionException(buf.toString());
        }
        return platformBom;
    }
}

View on GitHub (pinned to e1c734241f)

Solutions

  1. Pass fully-qualified, unambiguous BOM coordinates: -DbomGroupId=io.quarkus.platform -DbomArtifactId=quarkus-bom -DbomVersion=<version>
  2. Read the list of matching BOMs in the error message and pick one explicitly
  3. Configure the coordinates in the plugin <configuration> block of the pom.xml instead of partial CLI flags
  4. Regenerate/upgrade the project so it uses a current single-BOM platform catalog

Example fix

// before
mvn quarkus:add-extension -Dextensions="rest" -DbomVersion=3.8.1
// after
mvn quarkus:add-extension -Dextensions="rest" -DbomGroupId=io.quarkus.platform -DbomArtifactId=quarkus-bom -DbomVersion=3.8.1
Defensive patterns

Strategy: validation

Validate before calling

// Ensure all three BOM coordinates are specified before invoking the goal:
assert System.getProperty("bomGroupId") != null;
assert System.getProperty("bomArtifactId") != null;
assert System.getProperty("bomVersion") != null;

Prevention

When it happens

Trigger: Calling getSingleMatchingBom (from getImportedPlatforms) with null/partial BOM coordinates while the platform catalog resolves to multiple BOMs, e.g. specifying only a version (-DbomVersion=3.8.1) when the catalog holds both quarkus-bom and quarkus-universe-bom, or several matching members.

Common situations: Older platform catalogs containing multiple BOM artifacts (quarkus-bom, quarkus-universe-bom); user passing an incomplete coordinate prefix that matches several platform members; custom platform catalogs with multiple BOMs.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/2b8a6435a058a66a. Report an issue: GitHub.