quarkusio/quarkus · error · IllegalArgumentException
The registry descriptor configuration is missing for ${confi
Error message
The registry descriptor configuration is missing for ${configId} What it means
Thrown when a registry entry in the registry client configuration has no descriptor configuration (`registry.<id>.descriptor`). The factory needs descriptor artifact coordinates (groupId:artifactId:classifier:type:version) to resolve the registry's platform descriptor from Maven, so it refuses to build a client without them.
Source
Thrown at independent-projects/tools/registry-client/src/main/java/io/quarkus/registry/client/maven/MavenRegistryClientFactory.java:198
return null;
}
return new MavenPlatformsResolver(platformsConfig, registryArtifactResolver, log);
}
private RegistryNonPlatformExtensionsResolver getNonPlatformExtensionsResolver(RegistryConfig config,
MavenRegistryArtifactResolver registryArtifactResolver) {
final RegistryNonPlatformExtensionsConfig nonPlatformExtensions = config.getNonPlatformExtensions();
if (nonPlatformExtensions == null || nonPlatformExtensions.isDisabled()) {
log.debug("Non-platform extension catalogs were disabled for registry %s", config.getId());
return null;
}
return new MavenNonPlatformExtensionsResolver(nonPlatformExtensions, registryArtifactResolver, log);
}
private static Artifact getDescriptorCoords(RegistryConfig config) {
final RegistryDescriptorConfig descriptorConfig = config.getDescriptor();
if (descriptorConfig == null) {
throw new IllegalArgumentException("The registry descriptor configuration is missing for " + config.getId());
}
final ArtifactCoords originalDescrCoords = descriptorConfig.getArtifact();
return new DefaultArtifact(originalDescrCoords.getGroupId(),
originalDescrCoords.getArtifactId(), originalDescrCoords.getClassifier(), originalDescrCoords.getType(),
originalDescrCoords.getVersion());
}
private static boolean isCleanupTimestampedArtifacts(RegistryConfig config) {
final Object o = config.getExtra().get(CLEANUP_TIMESTAMPED_ARTIFACTS);
return o == null || Boolean.parseBoolean(o.toString());
}
private static MavenRegistryArtifactResolver newRegistryArtifactResolver(MavenArtifactResolver resolver,
boolean cleanupTimestampedArtifacts) {
return new MavenRegistryArtifactResolverWithCleanup(resolver, cleanupTimestampedArtifacts);
}
/**View on GitHub (pinned to e1c734241f)
Solutions
- Add a `descriptor:` block with at least `artifact: io.quarkus.registry:quarkus-platform-descriptor:<version>` under the registry entry in registries.yaml
- If the registry entry is a leftover from an older Quarkus version, regenerate the config file or remove the stale registry entry
- When building RegistryConfig programmatically, call the descriptor builder before passing the config to the factory
Example fix
# before
registries:
- id: registry.acme.org
# after
registries:
- id: registry.acme.org
descriptor:
artifact: io.quarkus.registry:quarkus-platform-descriptor:1.0-SNAPSHOT
metadata: true Defensive patterns
Strategy: validation
Validate before calling
if (config.getDescriptor() == null) {
throw new IllegalArgumentException("Registry " + config.getId() + " has no descriptor config; add descriptor.artifact to registries.yaml");
} Try / catch
try { client = factory.buildRegistryClient(cfg); } catch (IllegalArgumentException e) { if (e.getMessage().contains("descriptor configuration is missing")) { fixConfig(cfg.getId()); } else throw e; } Prevention
- Always include a descriptor block for non-default registries
- Lint registries.yaml against the schema after editing
- Regenerate config via Quarkus CLI rather than hand-editing
When it happens
Trigger: Calling MavenRegistryClientFactory.buildRegistryClient (via registryDescriptorCoords) with a RegistryConfig whose getDescriptor() returns null — e.g. a custom registry declared in registries.yaml without a `descriptor:` block.
Common situations: Hand-edited ~/.quarkus/config.yaml or project registries.yaml where the descriptor section was omitted or mis-indented; programmatically built RegistryConfig missing setDescriptor; config schema changes dropping the field.
Related errors
- Either extension-catalogs-included or mavenConfig/repository
- Malformed URL: + url
- Couldn't resolve the Quarkus platform catalog since none of
- Unable to find the TLS configuration for name ${name}.
- ConflictStrategyHandler named '" + entry.getValue() + "' not
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/726307293a377b28.
Report an issue: GitHub.