{"record":{"id":"675f67e722b182bc","repo":"quarkusio/quarkus","slug":"failed-to-inject-extension-deployment-dependencies-675f67","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/ApplicationDependencyTreeResolver.java","lineNumber":510,"sourceCode":"                        dep.setReloadable();\n                        appBuilder.addReloadableWorkspaceModule(key);\n                    } else {\n                        clearWalkingFlag(COLLECT_RELOADABLE_MODULES);\n                    }\n                }\n                appBuilder.addDependency(dep);\n            }\n            clearWalkingFlag(COLLECT_DIRECT_DEPS);\n\n            if (extDep != null) {\n                extDep.info.ensureActivated(appBuilder);\n                visitExtensionDependency(extDep);\n            }\n            visitRuntimeDependencies(node.getChildren());\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        if (popExclusions) {\n            exclusionStack.pollLast();\n        }\n        walkingFlags = prevWalkingFlags;\n    }\n\n    private ExtensionDependency getExtensionDependencyOrNull(DependencyNode node, Artifact artifact)\n            throws BootstrapDependencyProcessingException {\n        ExtensionDependency extDep = ExtensionDependency.get(node);\n        if (extDep != null) {\n            return extDep;\n        }\n        final ExtensionInfo extInfo = getExtensionInfoOrNull(artifact, node.getRepositories());\n        if (extInfo != null) {\n            final Collection<Exclusion> exclusions;\n            if (exclusionStack.isEmpty()) {","sourceCodeStart":492,"sourceCodeEnd":528,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ApplicationDependencyTreeResolver.java#L492-L528","documentation":"Thrown as a DeploymentInjectionException by visitRuntimeDependency when, while walking the runtime dependency tree and injecting Quarkus extension deployment artifacts, any exception occurs (other than a DeploymentInjectionException already in flight). It wraps the underlying failure encountered during extension deployment-dependency processing.","triggerScenarios":"During resolve(), after the runtime tree is collected, the tree walker processes each runtime extension dependency; any failure inside (descriptor resolution, deployment tree collection, artifact resolution) is wrapped by this message.","commonSituations":"A runtime extension artifact whose deployment counterpart cannot be resolved; malformed quarkus-extension.properties in an extension JAR; repository/network failures mid-walk; corrupted local repo entries.","solutions":["Inspect the wrapped cause 't' in the stack trace — it names the actual failing artifact or descriptor","Resolve the underlying artifact failure (re-download, fix repository config) as this exception is only a wrapper","Rebuild/refresh the extension artifact if it is locally built (mvn install the extension first)","Check that all declared Quarkus extensions resolve their deployment artifacts (deployment classifier artifacts exist in repos)"],"exampleFix":"// before: locally built extension not installed\n<dependency>\n  <groupId>com.acme</groupId>\n  <artifactId>acme-quarkus-extension</artifactId>\n  <version>1.0.0-SNAPSHOT</version>\n</dependency>\n// after: build and install the extension locally first\n./mvnw install -f extensions/acme/","handlingStrategy":"try-catch","validationCode":"// Ensure extension deployment artifacts resolve before walking:\n// mvn dependency:get -Dartifact=g:a:jar:classifier:deployment:version\nboolean extensionPresent(String ga, String v) {\n    return runMaven(\"dependency:get -Dartifact=\" + ga + \":\" + v) == 0;\n}","typeGuard":null,"tryCatchPattern":"try {\n    resolver.resolve();\n} catch (DeploymentInjectionException e) {\n    Throwable root = e.getCause();\n    log.error(\"Extension injection failed; underlying cause: \" + root, root);\n    throw e;\n}","preventionTips":["Install locally built extensions (mvn install) before apps depending on them","Keep quarkus BOM and extensions versions aligned","Fix repository reachability for deployment artifacts","Read the wrapped cause first — this exception is only a wrapper"],"tags":["maven","quarkus-extensions","dependency-resolution"],"backgroundTag":"maven-dependency-resolution-failure","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}