quarkusio/quarkus · error · RegistryResolutionException
Failed to resolve extension catalog of ${platformCoords} [fr
Error message
Failed to resolve extension catalog of ${platformCoords} [from Maven repository ${repoId} (${repoUrl}) [which is a mirror of ... . The mirror may be out of sync.]] What it means
MavenPlatformExtensionsResolver resolves a platform member BOM's extension catalog from Maven. When the underlying Maven resolution fails, it builds a RegistryResolutionException listing the platform coordinates, the repository it was fetched from, and any mirrors of that repository, adding 'The mirror may be out of sync.' to hint at mirror staleness. A related error is thrown if the downloaded JSON cannot be parsed.
Source
Thrown at independent-projects/tools/registry-client/src/main/java/io/quarkus/registry/client/maven/MavenPlatformExtensionsResolver.java:76
t = t.getCause();
}
final StringBuilder buf = new StringBuilder();
buf.append("Failed to resolve extension catalog of ")
.append(PlatformArtifacts.ensureBomArtifact(platformCoords).toCompactCoords());
if (repo != null) {
buf.append(" from Maven repository ").append(repo.getId()).append(" (").append(repo.getUrl()).append(")");
final List<RemoteRepository> mirrored = repo.getMirroredRepositories();
if (!mirrored.isEmpty()) {
buf.append(" which is a mirror of ");
buf.append(mirrored.get(0).getId()).append(" (").append(mirrored.get(0).getUrl()).append(")");
for (int i = 1; i < mirrored.size(); ++i) {
buf.append(", ").append(mirrored.get(i).getId()).append(" (").append(mirrored.get(i).getUrl())
.append(")");
}
buf.append(". The mirror may be out of sync.");
}
}
throw new RegistryResolutionException(buf.toString(), e);
}
try {
return ExtensionCatalog.mutableFromFile(jsonPath);
} catch (IOException e) {
throw new RegistryResolutionException("Failed to parse Quarkus extension catalog " + jsonPath, e);
}
}
private String resolveLatestBomVersion(ArtifactCoords bom, String versionRange)
throws RegistryResolutionException {
final Artifact bomArtifact = new DefaultArtifact(bom.getGroupId(),
PlatformArtifacts.ensureBomArtifactId(bom.getArtifactId()),
"", "pom", bom.getVersion());
log.debug("Resolving the latest version of %s:%s:%s:%s in the range %s", bom.getGroupId(), bom.getArtifactId(),
bom.getClassifier(), bom.getType(), versionRange);
try {
return artifactResolver.getLatestVersionFromRange(bomArtifact, versionRange);
} catch (Exception e) {View on GitHub (pinned to e1c734241f)
Solutions
- Check the mirror URL in the message and sync it with the upstream repository (or force it to proxy on demand).
- Verify the platform BOM coordinates exist at the repository URL shown (curl/404 check).
- Fix settings.xml mirrorOf/repository configuration so the artifact can be fetched from the authoritative repo.
- If the artifact did download but fails parsing, inspect jsonPath and clear the local cache; the companion message 'Failed to parse Quarkus extension catalog' covers that path.
- Retry after the mirror catches up (new releases take time to propagate).
Example fix
// before (settings.xml) <mirror> <id>corp</id><mirrorOf>external:*</mirrorOf> <url>https://nexus.corp/maven-public</url> <!-- stale, missing new platform BOM --> </mirror> // after <!-- sync nexus.corp with upstream registry.maven.quarkus.io, or --> <mirror> <id>corp</id><mirrorOf>*,!quarkus-registry</mirrorOf> <url>https://nexus.corp/maven-public</url> </mirror>
Defensive patterns
Strategy: retry
Validate before calling
// Before resolving, check the artifact is reachable at the repo/mirror: // curl -fsSI <repoUrl>/<platformCoords path>.json -> expect 200
Try / catch
// Java
try {
catalog = resolver.resolvePlatformExtensions(bomCoords);
} catch (RegistryResolutionException e) {
if (e.getMessage().contains("The mirror may be out of sync")) {
// wait/sync mirror, or route around it, then retry once
catalog = resolver.resolvePlatformExtensions(bomCoords);
} else throw e;
} Prevention
- Keep corporate mirrors in sync or let them proxy-on-demand for registry.maven.quarkus.io.
- Test mirrorOf rules in settings.xml after every Quarkus release.
- Verify new platform BOM availability on the mirror before upgrading projects.
- For parse errors (companion message), inspect the downloaded JSON and clear the local cache.
When it happens
Trigger: resolvePlatformExtensions(bom) while Maven cannot download the platform BOM's catalog artifact from the repository or its mirrors — 404 because the mirror lacks the artifact, unreachable repo, or metadata mismatch between the primary repo and its mirror.
Common situations: Corporate Nexus/Artifactory mirror that has not yet proxied/cached the new Quarkus platform release; platform BOM published to a repo whose mirror is behind; wrong mirrorOf configuration in settings.xml; offline builds.
Related errors
- Failed to initialize Quarkus extension catalog resolver
- Failed to initialize Maven artifact resolver
- Failed to resolve Quarkus extension catalog
- The 'stream' parameter cannot be combined with 'platformGrou
- Failed to resolve the extension catalog for stream '${stream
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/edaac8e05a9c1792.
Report an issue: GitHub.