{"record":{"id":"68c33ef7e2fe3a23","repo":"quarkusio/quarkus","slug":"failed-to-resolve-extension-coords","errorCode":null,"errorMessage":"Failed to resolve extension ${coords}","messagePattern":"Failed to resolve extension (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/CreateProjectHelper.java","lineNumber":78,"sourceCode":"     *\n     * @param catalog original extension catalog\n     * @param extensions extra extensions to add to the catalog\n     * @param mvn Maven artifact resolver\n     * @return complete extension catalog\n     * @throws BootstrapMavenException in case of a failure to resolve extensions requested by the user\n     */\n    public static ExtensionCatalog completeCatalog(ExtensionCatalog catalog, Collection<String> extensions,\n            MavenArtifactResolver mvn) {\n        ExtensionCatalog.Mutable mutableCatalog = null;\n        for (String extArg : extensions) {\n            if (isFullArtifactCoords(extArg)) {\n                var coords = ArtifactCoords.fromString(extArg.trim());\n                final Path extJar;\n                try {\n                    extJar = mvn.resolve(new DefaultArtifact(coords.getGroupId(), coords.getArtifactId(),\n                            coords.getClassifier(), coords.getType(), coords.getVersion())).getArtifact().getFile().toPath();\n                } catch (BootstrapMavenException e) {\n                    throw new RuntimeException(\"Failed to resolve extension \" + coords, e);\n                }\n                final Extension ext = ExtensionMetadataUtil.applyExtensionMetadata(\n                        PathTree.ofDirectoryOrArchive(extJar), visit -> {\n                            try {\n                                return Extension.fromFile(visit.getPath());\n                            } catch (IOException e) {\n                                throw new IllegalStateException(\n                                        \"Failed to parse Quarkus extension metadata \" + visit.getPath());\n                            }\n                        });\n                if (ext != null) {\n                    if (mutableCatalog == null) {\n                        mutableCatalog = catalog.mutable();\n                    }\n                    var i = mutableCatalog.getExtensions().iterator();\n                    boolean add = true;\n                    while (i.hasNext()) {\n                        final ArtifactCoords catalogCoords = i.next().getArtifact();","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/CreateProjectHelper.java#L60-L96","documentation":"CreateProjectHelper.completeCatalog resolves user-supplied extension coordinates through Maven to inspect the extension jar. If Maven resolution throws BootstrapMavenException, it is rethrown as a RuntimeException with this message, meaning the requested extension artifact could not be downloaded or located in the configured repositories.","triggerScenarios":"Calling completeCatalogWithCoords / completeCatalog with an extension argument (extensionId:group:artifact:version) whose artifact cannot be resolved by the configured Maven resolver (wrong coordinates, version not in any repository, offline mode).","commonSituations":"Typos in extension coordinates; specifying a version that does not exist; missing custom repository configuration; no network access / corporate proxy; extension never published for the current Quarkus version.","solutions":["Verify the extension coordinates (groupId, artifactId, version) exist in the repository","Check that the artifact version matches the Quarkus platform version or is published","Ensure Maven repository settings (settings.xml, mirrors, proxies) allow resolution","Test resolution manually with mvn dependency:get -Dartifact=group:artifact:version"],"exampleFix":"// before\n--extension-id=acme:com.acme:acme-extensions:9.9.9  // nonexistent version\n// after\n--extension-id=acme:com.acme:acme-extensions:1.0.0  // published version","handlingStrategy":"try-catch","validationCode":"ArtifactCoords coords = ArtifactCoords.fromString(extArg.trim());\nmvn.resolve(new DefaultArtifact(coords.getGroupId(), coords.getArtifactId(), coords.getClassifier(), coords.getType(), coords.getVersion())); // pre-check resolution","typeGuard":null,"tryCatchPattern":"try { createProjectHelper.completeCatalog(...); } catch (RuntimeException e) { if (e.getMessage().startsWith(\"Failed to resolve extension\")) { log.error(\"Check coordinates/repositories/offline state\", e.getCause()); } }","preventionTips":["Verify coordinates with mvn dependency:get before generation","Ensure settings.xml repositories/mirrors/proxies are correct","Avoid offline mode when using extension coordinates not in the local repo","Pin published versions compatible with the Quarkus platform"],"tags":["maven","artifact-resolution","network"],"backgroundTag":"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"}