{"record":{"id":"c99234c2041b1b09","repo":"quarkusio/quarkus","slug":"failed-to-resolve-extension-catalog-for-coords","errorCode":null,"errorMessage":"Failed to resolve extension catalog for ${coords}. Make sure the groupId, artifactId and version are spelled correctly and the relevant Maven repositories are configured.","messagePattern":"Failed to resolve extension catalog for (.+?)\\. Make sure the groupId, artifactId and version are spelled correctly and the relevant Maven repositories are configured\\.","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/platform/tools/ToolsUtils.java","lineNumber":157,"sourceCode":"                catalogCoords = new DefaultArtifact(\n                        ToolsConstants.IO_QUARKUS,\n                        \"quarkus-bom\" + BootstrapConstants.PLATFORM_DESCRIPTOR_ARTIFACT_ID_SUFFIX,\n                        catalogCoords.getClassifier(), catalogCoords.getExtension(), catalogCoords.getVersion());\n                try {\n                    log.debug(\"Resolving platform descriptor %s\", catalogCoords);\n                    platformJson = artifactResolver.resolve(catalogCoords).getArtifact().getFile().toPath();\n                } catch (Exception e2) {\n                }\n            }\n            if (platformJson == null) {\n                final StringBuilder sb = new StringBuilder();\n                sb.append(\"Failed to resolve extension catalog for \");\n                sb.append(PlatformArtifacts.ensureBomArtifact(ArtifactCoords.of(catalogCoords.getGroupId(),\n                        catalogCoords.getArtifactId(), catalogCoords.getClassifier(), catalogCoords.getExtension(),\n                        catalogCoords.getVersion())).toCompactCoords());\n                sb.append(\n                        \". Make sure the groupId, artifactId and version are spelled correctly and the relevant Maven repositories are configured.\");\n                throw new RuntimeException(sb.toString(), e);\n            }\n        }\n        ExtensionCatalog catalog;\n        try {\n            catalog = ExtensionCatalog.fromFile(platformJson);\n        } catch (IOException e) {\n            throw new RuntimeException(\"Failed to deserialize extension catalog \" + platformJson, e);\n        }\n        Map<String, Object> md = catalog.getMetadata();\n        if (md != null) {\n            Object o = md.get(\"platform-release\");\n            if (o instanceof Map) {\n                Object members = ((Map<?, ?>) o).get(\"members\");\n                if (members instanceof Collection) {\n                    final Collection<?> memberList = (Collection<?>) members;\n                    final List<ExtensionCatalog> catalogs = new ArrayList<>(memberList.size());\n\n                    int memberIndex = 0;","sourceCodeStart":139,"sourceCodeEnd":175,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/platform/tools/ToolsUtils.java#L139-L175","documentation":"Thrown by ToolsUtils.resolvePlatformDescriptorDirectly when the Maven artifact resolver cannot download the platform BOM (converted to a JSON extension catalog artifact) for the requested coordinates. It wraps the underlying resolver exception and indicates the coordinates or repository configuration are wrong. The message includes the compact BOM coordinates so the offending artifact is identifiable.","triggerScenarios":"Calling resolvePlatformDescriptorDirectly with catalog coordinates whose groupId/artifactId/version do not exist in any configured repository, or when the required Maven repository is not configured in settings.xml/pom.","commonSituations":"Typos in the quarkus platform BOM coordinates; pinning a Quarkus version that was never released; corporate Nexus/Artifactory mirror missing the quarkus repo; offline environment without cached artifacts.","solutions":["Verify the groupId, artifactId and version of the platform BOM (e.g. io.quarkus.platform:quarkus-bom:<version>) match a published release","Add the repository hosting the platform artifacts (e.g. Maven Central or the Quarkus snapshots repo) to settings.xml or the project POM","Run mvn dependency:get -Dartifact=<coords> to reproduce and see the detailed underlying resolution error","Check the underlying 'caused by' exception for 401/403 (auth) vs 404 (missing artifact) to pinpoint the issue"],"exampleFix":"// before: resolvePlatformDescriptorDirectly(\"io.quarkus.platform:quarkus-bom:999-SNAPSHOT\")\n// after: use an existing version\nresolvePlatformDescriptorDirectly(\"io.quarkus.platform:quarkus-bom:3.15.1\")","handlingStrategy":"validation","validationCode":"// Validate coordinates and repository access before resolving\nString coords = groupId + \":\" + artifactId + \":\" + version;\nProcess p = new ProcessBuilder(\"mvn\", \"dependency:get\", \"-Dartifact=\" + coords).inheritIO().start();\nif (p.waitFor() != 0) throw new IllegalStateException(\"Artifact not resolvable: \" + coords);","typeGuard":null,"tryCatchPattern":"try {\n    resolvePlatformDescriptorDirectly(coords);\n} catch (RuntimeException e) {\n    if (e.getMessage().startsWith(\"Failed to resolve extension catalog\")) {\n        // inspect cause: 404 => bad coords, 401/403 => auth, UnknownHost => network\n    }\n    throw e;\n}","preventionTips":["Pin platform versions to released Quarkus releases (check Maven Central first)","Configure all required repositories in settings.xml before resolving","Use mvn dependency:get as a pre-flight check in CI"],"tags":["maven","artifact-resolution","platform"],"backgroundTag":"maven-artifact-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"}