{"record":{"id":"ebc577b4acf1a419","repo":"quarkusio/quarkus","slug":"failed-to-resolve-the-extension-catalog-for-stream","errorCode":null,"errorMessage":"Failed to resolve the extension catalog for stream '${stream}'","messagePattern":"Failed to resolve the extension catalog for stream '(.+?)'","errorType":"exception","errorClass":"MojoExecutionException","httpStatus":null,"severity":"error","filePath":"devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java","lineNumber":427,"sourceCode":"            ExtensionCatalogResolver catalogResolver) throws MojoExecutionException {\n        if (!catalogResolver.hasRegistries()) {\n            throw new MojoExecutionException(\n                    \"Specifying a stream requires the Quarkus extension registry client.\"\n                            + \" Please make sure the registry client is enabled.\");\n        }\n        final PlatformStreamCoords streamCoords;\n        try {\n            streamCoords = PlatformStreamCoords.fromString(stream.trim());\n        } catch (IllegalArgumentException e) {\n            throw new MojoExecutionException(\n                    \"Invalid stream value '\" + stream + \"'.\"\n                            + \" Value should be specified as 'platformKey:streamId', for example: 3.15 or io.quarkus.platform:3.15\",\n                    e);\n        }\n        try {\n            return catalogResolver.resolveExtensionCatalog(streamCoords);\n        } catch (RegistryResolutionException e) {\n            throw new MojoExecutionException(\"Failed to resolve the extension catalog for stream '\" + stream + \"'\", e);\n        }\n    }\n\n    private static ExtensionCatalog resolveExtensionCatalogDirectly(AbstractMojo mojo, String groupId, String artifactId,\n            String version,\n            ExtensionCatalogResolver catalogResolver, MavenArtifactResolver artifactResolver, MessageWriter log) {\n        groupId = getPlatformGroupId(mojo, groupId);\n        artifactId = getPlatformArtifactId(artifactId);\n        version = getPlatformVersion(mojo, version);\n        final ExtensionCatalog catalog = ToolsUtils.resolvePlatformDescriptorDirectly(groupId, artifactId, version,\n                artifactResolver, log);\n\n        final StringBuilder buf = new StringBuilder();\n        buf.append(\"The extension catalog will be narrowed to the \").append(groupId).append(\":\").append(artifactId)\n                .append(\":\").append(version).append(\" platform release.\");\n        if (!QuarkusProjectHelper.isRegistryClientEnabled()) {\n            buf.append(\n                    \" To enable the complete Quarkiverse extension catalog along with the latest recommended platform releases, please, make sure the extension registry client is enabled.\");","sourceCodeStart":409,"sourceCodeEnd":445,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java#L409-L445","documentation":"After successfully parsing the stream coordinates, resolveExtensionsCatalogForStream calls catalogResolver.resolveExtensionCatalog(streamCoords); a RegistryResolutionException there is rethrown as this MojoExecutionException. It means the registry client could not fetch the extension catalog metadata for the requested stream — the input was valid, but metadata resolution failed.","triggerScenarios":"Running create/add-extension with -Dstream=<valid stream> when the registry server is unreachable, the registry quarkus-registry.json is missing or malformed, Maven repository resolution of the registry artifact fails, or the requested stream does not exist in the registry.","commonSituations":"Corporate proxies/firewalls blocking registry.quarkus.io; stale cached registry metadata in ~/.m2; specifying a stream (e.g. 99.0) the registry has never published; transient server outages.","solutions":["Inspect the 'Caused by' RegistryResolutionException for the exact resolution failure","Verify network access to the configured Quarkus registry (https://registry.quarkus.io) or your mirror","Confirm the stream actually exists (check code.quarkus.io or registry metadata) — e.g. 3.15 not 3.99","Refresh cached registry data: remove io/quarkus/registry artifacts from ~/.m2/repository and retry","Fall back to explicit platform coordinates (platformGroupId/platformArtifactId/platformVersion) resolved from Maven Central instead of the registry"],"exampleFix":"# before: stream that the registry cannot resolve\nmvn quarkus:create -Dstream=3.99\n# after: pin a real published version via coordinates\nmvn quarkus:create -DplatformGroupId=io.quarkus.platform -DplatformArtifactId=quarkus-bom -DplatformVersion=3.15.1","handlingStrategy":"retry","validationCode":"# Pre-check reachability of the registry\ncurl -fsSL https://registry.quarkus.io/maven/io/quarkus/registry/quarkus-registry.json -o /dev/null && echo OK\n# And confirm the stream exists in that metadata","typeGuard":null,"tryCatchPattern":"// Retry transient resolution failures, then fall back to Maven-coordinate resolution\ntry { return resolver.resolveExtensionCatalog(streamCoords); }\ncatch (RegistryResolutionException e) {\n    if (isTransient(e)) return retry(streamCoords);\n    return resolveViaMavenCoordinates(platformGav); // fallback\n}","preventionTips":["Verify the stream exists before using it (check registry metadata or code.quarkus.io)","Allow registry.quarkus.io through proxies/firewalls","Clear stale ~/.m2 registry metadata after long-lived offline periods","Keep an explicit platformVersion fallback documented for CI"],"tags":["maven","network","registry","resolution"],"backgroundTag":"registry-resolution-failed","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}