{"record":{"id":"7768d3ca7772d069","repo":"quarkusio/quarkus","slug":"failed-to-inject-extension-deployment-dependencies-7768d3","errorCode":null,"errorMessage":"Failed to inject extension deployment dependencies","messagePattern":"Failed to inject extension deployment dependencies","errorType":"exception","errorClass":"DeploymentInjectionException","httpStatus":null,"severity":"error","filePath":"independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ApplicationDependencyResolver.java","lineNumber":660,"sourceCode":"                }\n                try {\n                    resolvedDep = DependencyUtils.toAppArtifact(getResolvedArtifact(), module)\n                            .setType(DependencyUtils.getType(artifact))\n                            .setOptional(node.getDependency().isOptional())\n                            .setScope(node.getDependency().getScope())\n                            .setFlags(DependencyFlags.RUNTIME_CP | DependencyFlags.DEPLOYMENT_CP);\n                    if (JavaScopes.PROVIDED.equals(resolvedDep.getScope())) {\n                        resolvedDep.setFlags(DependencyFlags.COMPILE_ONLY);\n                    }\n                    var ext = getExtensionDependencyOrNull();\n                    if (ext != null) {\n                        resolvedDep.setRuntimeExtensionArtifact();\n                        collectConditionalDependencies();\n                    }\n                } catch (DeploymentInjectionException e) {\n                    throw e;\n                } catch (Exception t) {\n                    throw new DeploymentInjectionException(\"Failed to inject extension deployment dependencies\", t);\n                }\n            }\n        }\n\n        void scheduleChildVisits(ModelResolutionTaskRunner taskRunner,\n                BiConsumer<AppDep, ModelResolutionTaskRunner> childVisitor) {\n            filterChildren();\n            for (var child : children) {\n                childVisitor.accept(child, taskRunner);\n            }\n        }\n\n        /**\n         * Filters out dependency nodes that point out to nodes that survived version conflict resolution.\n         */\n        private void filterChildren() {\n            var childNodes = node.getChildren();\n            List<DependencyNode> filtered = null;","sourceCodeStart":642,"sourceCodeEnd":678,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ApplicationDependencyResolver.java#L642-L678","documentation":"While visiting runtime dependencies to inject Quarkus extension deployment artifacts, any unexpected exception (other than an already-wrapped DeploymentInjectionException) is rethrown as a DeploymentInjectionException \"Failed to inject extension deployment dependencies\". This indicates the extension dependency graph augmentation failed midway.","triggerScenarios":"visitRuntimeDependency processes a node identified as a runtime extension artifact, calls collectConditionalDependencies(), and an unexpected Throwable occurs (e.g. failure resolving the extension's deployment artifact or reading its descriptor).","commonSituations":"Extension deployment artifact missing from repositories; mixed Quarkus core/extension versions causing incompatible deployment descriptors; corrupt local cache for a -deployment artifact; dev-mode live reload picking up a newly added broken extension.","solutions":["Inspect the cause chain to identify the failing extension and its deployment artifact.","Align all Quarkus extension versions with a single quarkus-bom version.","Delete the failing extension's ~/.m2/repository entries and re-resolve (mvn -U).","Verify the extension's deployment artifact is published and reachable in configured repositories."],"exampleFix":"// before\n<dependency><groupId>io.quarkus</groupId><artifactId>quarkus-rest</artifactId><version>3.0.0</version></dependency>\n<dependency><groupId>io.quarkus</groupId><artifactId>quarkus-hibernate-orm</artifactId><version>3.15.0</version></dependency> <!-- mismatched -->\n// after\nImport quarkus-bom 3.15.0 and omit explicit versions from all Quarkus extensions.","handlingStrategy":"try-catch","validationCode":"// Verify each runtime extension has a matching deployment artifact version:\nfor (var ext : runtimeExtensions) {\n    if (!ext.getVersion().equals(quarkusCoreVersion)\n        && ext.getGroupId().equals(\"io.quarkus\")) {\n        throw new IllegalStateException(\"Extension \" + ext + \" version does not match core \" + quarkusCoreVersion);\n    }\n}","typeGuard":"static boolean isVersionAligned(String extVersion, String quarkusBomVersion) {\n    return extVersion != null && extVersion.equals(quarkusBomVersion);\n}","tryCatchPattern":"try {\n    resolver.resolve(...);\n} catch (DeploymentInjectionException e) {\n    if (e.getMessage().equals(\"Failed to inject extension deployment dependencies\")) {\n        log.error(\"Cause: \" + e.getCause(), e); // identify failing extension\n    }\n    throw e;\n}","preventionTips":["Never mix Quarkus extension versions from different releases.","Import quarkus-bom and omit explicit extension versions.","After adding an extension, re-run resolution cleanly (mvn -U) before dev mode."],"tags":["maven","extension","deployment","dev-mode"],"backgroundTag":"deployment-dependency-injection-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"}