quarkusio/quarkus · error · MojoExecutionException

Specifying a stream requires the Quarkus extension registry

Error message

Specifying a stream requires the Quarkus extension registry client. Please make sure the registry client is enabled.

What it means

resolveExtensionsCatalogForStream requires the Quarkus extension registry client; when the resolver reports no registries configured (catalogResolver.hasRegistries() is false), it throws this MojoExecutionException. Stream-based lookup (-Dstream=3.15) is resolved via registry metadata, which is only available when the registry client is enabled (quarkus.registry.enabled=true and registry quarkus-registry.json present).

Source

Thrown at devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java:411

        if (catalogResolver.hasRegistries()) {
            try {
                return isBlank(groupId) && isBlank(artifactId) && isBlank(version)
                        ? catalogResolver.resolveExtensionCatalog()
                        : catalogResolver.resolveExtensionCatalog(List.of(
                                ArtifactCoords.pom(getPlatformGroupId(mojo, groupId), getPlatformArtifactId(artifactId),
                                        getPlatformVersion(mojo, version))));
            } catch (RegistryResolutionException e) {
                log.warn(e.getLocalizedMessage());
                mojo.getLog().debug(e);
            }
        }
        return resolveExtensionCatalogDirectly(mojo, groupId, artifactId, version, catalogResolver, artifactResolver, log);
    }

    private static ExtensionCatalog resolveExtensionsCatalogForStream(AbstractMojo mojo, String stream,
            ExtensionCatalogResolver catalogResolver) throws MojoExecutionException {
        if (!catalogResolver.hasRegistries()) {
            throw new MojoExecutionException(
                    "Specifying a stream requires the Quarkus extension registry client."
                            + " Please make sure the registry client is enabled.");
        }
        final PlatformStreamCoords streamCoords;
        try {
            streamCoords = PlatformStreamCoords.fromString(stream.trim());
        } catch (IllegalArgumentException e) {
            throw new MojoExecutionException(
                    "Invalid stream value '" + stream + "'."
                            + " Value should be specified as 'platformKey:streamId', for example: 3.15 or io.quarkus.platform:3.15",
                    e);
        }
        try {
            return catalogResolver.resolveExtensionCatalog(streamCoords);
        } catch (RegistryResolutionException e) {
            throw new MojoExecutionException("Failed to resolve the extension catalog for stream '" + stream + "'", e);
        }
    }

View on GitHub (pinned to e1c734241f)

Solutions

  1. Enable the registry client: -Dquarkus.registry.enabled=true
  2. Instead of -Dstream, specify explicit platform coordinates (platformGroupId/platformArtifactId/platformVersion) which don't require the registry client
  3. Add the quarkus registry repository (https://registry.quarkus.io/maven) to your Maven repositories or settings.xml

Example fix

# before
mvn quarkus:create -Dstream=3.15  # with quarkus.registry.enabled=false
# after: either enable the client or use coordinates
mvn quarkus:create -DplatformGroupId=io.quarkus.platform -DplatformArtifactId=quarkus-bom -DplatformVersion=3.15.1
Defensive patterns

Strategy: validation

Validate before calling

# Confirm the registry client is usable before a stream-based create
mvn quarkus:create -Dstream=3.15 -Dquarkus.registry.enabled=true
# Or check settings/pom for quarkus.registry.enabled=false and registry repositories

Try / catch

// If the registry client is disabled by policy, switch to explicit coordinates instead of catching:
mvn quarkus:create -DplatformGroupId=io.quarkus.platform -DplatformArtifactId=quarkus-bom -DplatformVersion=3.15.1

Prevention

When it happens

Trigger: Running `mvn quarkus:create -Dstream=<x>` while quarkus.registry.enabled=false, or without any registry repositories configured in the build/platform so the resolver has no registries.

Common situations: Users who disabled the registry client (quarkus.registry.enabled=false) for offline builds then try stream-based creation; enterprise environments with mirrors that strip registry metadata; older projects created before the registry client was default.

Related errors


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