quarkusio/quarkus · error · RegistryResolutionException
The following registries were configured as exclusive provid
Error message
The following registries were configured as exclusive providers of the ${bomCoords} platform: ${conflictingRegistryIds} What it means
A RegistryResolutionException thrown during resolver initialization when two or more registries are each configured as the exclusive provider of the same platform BOM. Exclusive-provider conflicts are detected per BOM and reported with the ids of all conflicting registries.
Source
Thrown at independent-projects/tools/registry-client/src/main/java/io/quarkus/registry/ExtensionCatalogResolver.java:676
final Set<ArtifactCoords> addedPlatformBoms = new HashSet<>();
String quarkusVersion = null;
for (ArtifactCoords bom : preferredPlatforms) {
if (!addedPlatformBoms.add(bom)) {
continue;
}
if (registries == null || registries.isEmpty()) {
try {
registries = filterRegistries(r -> r.checkPlatform(bom));
} catch (ExclusiveProviderConflictException e) {
final StringBuilder buf = new StringBuilder();
buf.append(
"The following registries were configured as exclusive providers of the ");
buf.append(PlatformArtifacts.ensureBomArtifact(bom).toCompactCoords());
buf.append(" platform: ").append(e.conflictingRegistries.get(0).getId());
for (int i = 1; i < e.conflictingRegistries.size(); ++i) {
buf.append(", ").append(e.conflictingRegistries.get(i).getId());
}
throw new RegistryResolutionException(buf.toString());
}
if (registries.isEmpty()) {
log.warn("None of the configured registries recognizes platform " + bom.toCompactCoords());
continue;
}
}
ExtensionCatalog.Mutable catalog = null;
RegistryExtensionResolver registry = null;
int registryPreferenceIndex = 0;
for (int i = 0; i < registries.size(); ++i) {
registry = registries.get(i);
try {
catalog = registry.resolvePlatformExtensions(bom);
registryPreferenceIndex = catalogBuilder.getRegistryPreferenceIndex(registry.getId());
break;
} catch (RegistryResolutionException e) {View on GitHub (pinned to e1c734241f)
Solutions
- Mark exclusive=true for only one registry per platform BOM; remove the exclusive flag from the duplicate
- Remove one of the conflicting registries from the configuration for that platform
- Split the platforms so each registry exclusively provides a distinct BOM
Example fix
// before: both registries exclusive for the same BOM <quarkus-registry><url>https://registry.quarkus.io</url><exclusive>true</exclusive></quarkus-registry> <quarkus-registry><url>https://registry.quarkus.redhat.com</url><exclusive>true</exclusive></quarkus-registry> // after <quarkus-registry><url>https://registry.quarkus.io</url></quarkus-registry> <quarkus-registry><url>https://registry.quarkus.redhat.com</url><exclusive>true</exclusive></quarkus-registry>
Defensive patterns
Strategy: validation
Validate before calling
// Ensure at most one exclusive registry per platform BOM in config
Map<String, Long> counts = registries.stream()
.filter(r -> r.isExclusive())
.flatMap(r -> r.getExclusivePlatforms().stream())
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
if (counts.values().stream().anyMatch(c -> c > 1)) throw new IllegalStateException("Duplicate exclusive platform"); Try / catch
try { resolver.resolveExtensionCatalog(); } catch (RegistryResolutionException e) { if (e.getMessage().contains("exclusive providers")) { /* fix registry config */ } throw e; } Prevention
- Audit settings.xml for duplicate exclusive=true flags
- Assign each platform BOM exactly one owning registry
- Review shared corporate registry configs before merging
- Keep community and internal registries on distinct platforms
When it happens
Trigger: ExtensionCatalogResolver constructor (config processing) resolves each configured platform BOM via its registries; a ConflictingProviderException carrying conflictingRegistries is caught and rethrown as this message using PlatformArtifacts.ensureBomArtifact(bom).toCompactCoords().
Common situations: settings.xml or registry client config marking two different registries with exclusive=true for the same io.quarkus.platform BOM; mixing corporate and community registries both claiming exclusive ownership of the same platform.
Related errors
- Specifying a stream requires the Quarkus extension registry
- This goal requires a Quarkus extension registry client to be
- The project does not import any Quarkus platform BOM
- Failed to locate ${registryId} among the configured registri
- Quarkus extension registry is not available
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/932a292276c8e806.
Report an issue: GitHub.