{"record":{"id":"f0e68a7c40fc9f44","repo":"quarkusio/quarkus","slug":"failed-to-resolve-platform-descriptor-platform","errorCode":null,"errorMessage":"Failed to resolve platform descriptor ${platform}","messagePattern":"Failed to resolve platform descriptor (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/platform/tools/ToolsUtils.java","lineNumber":241,"sourceCode":"        return catalog;\n    }\n\n    public static ExtensionCatalog mergePlatforms(List<ArtifactCoords> platforms, MavenArtifactResolver artifactResolver) {\n        // TODO remove this method once we have the registry service available\n        return mergePlatforms(platforms, new BootstrapAppModelResolver(artifactResolver));\n    }\n\n    public static ExtensionCatalog mergePlatforms(List<ArtifactCoords> platforms, AppModelResolver artifactResolver) {\n        // TODO remove this method once we have the registry service available\n        List<ExtensionCatalog> catalogs = new ArrayList<>(platforms.size());\n        for (ArtifactCoords platform : platforms) {\n            final Path json;\n            try {\n                json = artifactResolver.resolve(ArtifactCoords.of(platform.getGroupId(), platform.getArtifactId(),\n                        platform.getClassifier(), platform.getType(), platform.getVersion())).getResolvedPaths()\n                        .getSinglePath();\n            } catch (Exception e) {\n                throw new RuntimeException(\"Failed to resolve platform descriptor \" + platform, e);\n            }\n            try {\n                catalogs.add(ExtensionCatalog.fromFile(json));\n            } catch (IOException e) {\n                throw new RuntimeException(\"Failed to deserialize platform descriptor \" + json, e);\n            }\n        }\n        return CatalogMergeUtility.merge(catalogs);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static Properties readQuarkusProperties(ExtensionCatalog catalog) {\n        Map<Object, Object> map = (Map<Object, Object>) catalog.getMetadata().getOrDefault(\"project\", Collections.emptyMap());\n        map = (Map<Object, Object>) map.getOrDefault(\"properties\", Collections.emptyMap());\n        final Properties properties = new Properties();\n        map.entrySet().forEach(\n                e -> properties.setProperty(e.getKey().toString(), e.getValue() == null ? null : e.getValue().toString()));\n        return properties;","sourceCodeStart":223,"sourceCodeEnd":259,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/platform/tools/ToolsUtils.java#L223-L259","documentation":"Thrown by ToolsUtils.mergePlatforms when the Maven artifact resolver cannot resolve one of the platform descriptor coordinates passed to it. The wrapping RuntimeException carries the ArtifactCoords of the platform that failed, with the underlying resolver exception as the cause.","triggerScenarios":"Calling mergePlatforms with a platform entry (groupId/artifactId/classifier/type/version) that cannot be downloaded: nonexistent version, missing repository, or network failure during artifactResolver.resolve(...).","commonSituations":"Merging imported platforms where one member platform version does not exist; restricted corporate repositories; typo in a platform coordinate in a config.","solutions":["Check the coordinates of the failing platform (printed in the message) against the repository listing","Ensure all repositories hosting the imported platforms are configured","Validate the version exists (mvn dependency:get) before merging","Fix network/proxy issues indicated by the root cause"],"exampleFix":"// before\nmergePlatforms(List.of(ArtifactCoords.of(\"io.quarkus.platform\",\"quarkus-bom\",null,\"json\",\"3.0.0.Final\"),\n                       ArtifactCoords.of(\"io.quarkiverse.foo\",\"quarkus-foo-bom\",null,\"json\",\"0.0.1\")))\n// after: use a released bom version\nmergePlatforms(List.of(ArtifactCoords.of(\"io.quarkus.platform\",\"quarkus-bom\",null,\"json\",\"3.15.1\"),\n                       ArtifactCoords.of(\"io.quarkiverse.foo\",\"quarkus-foo-bom\",null,\"json\",\"2.0.0\")))","handlingStrategy":"validation","validationCode":"for (ArtifactCoords p : platforms) {\n    // pre-flight: ensure coordinates are complete and version non-empty\n    if (p.getVersion() == null || p.getVersion().isBlank())\n        throw new IllegalArgumentException(\"Missing version for platform \" + p);\n}","typeGuard":null,"tryCatchPattern":"try {\n    mergePlatforms(platforms);\n} catch (RuntimeException e) {\n    if (e.getMessage().startsWith(\"Failed to resolve platform descriptor\")) {\n        // log e.getCause() to distinguish 404 vs network vs auth\n    }\n    throw e;\n}","preventionTips":["Validate every imported platform coordinate exists in a configured repository","Check network/proxy settings before bulk merges","Log each platform resolved so the failing one is obvious"],"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"}