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

  1. Add a `descriptor:` block with at least `artifact: io.quarkus.registry:quarkus-platform-descriptor:<version>` under the registry entry in registries.yaml
  2. If the registry entry is a leftover from an older Quarkus version, regenerate the config file or remove the stale registry entry
  3. 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

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


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