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
- Pass fully-qualified, unambiguous BOM coordinates: -DbomGroupId=io.quarkus.platform -DbomArtifactId=quarkus-bom -DbomVersion=<version>
- Read the list of matching BOMs in the error message and pick one explicitly
- Configure the coordinates in the plugin <configuration> block of the pom.xml instead of partial CLI flags
- 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
- Always pass fully-qualified io.quarkus.platform:quarkus-bom:<version> coordinates
- Avoid partial coordinates (e.g. version-only) against multi-BOM catalogs
- Keep platform catalogs current to benefit from single-BOM layouts
- Store coordinates in the pom plugin configuration instead of ad-hoc flags
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
- Bad artifact coordinates , expected format is <groupId>:<art
- The project does not import any Quarkus platform BOM
- Unable to determine groupId and artifactId of the jar that c
- Unable to determine groupId and artifactId of the extension
- Unable to determine groupId and artifactId of the jar that c
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/2b8a6435a058a66a.
Report an issue: GitHub.