quarkusio/quarkus · error · BootstrapDependencyProcessingException
Quarkus extension deployment artifact does not appear to de
Error message
Quarkus extension deployment artifact does not appear to depend on the corresponding runtime artifact
What it means
Thrown as a BootstrapDependencyProcessingException by injectDeploymentDependencies after the deployment tree replaces runtime extension nodes: if the runtime extension node is not present anywhere in the (managed/exclusion-adjusted) deployment tree, Quarkus cannot safely swap it in and throws. It indicates the deployment artifact does not depend on its runtime counterpart.
Source
Thrown at independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ApplicationDependencyTreeResolver.java:639
throws BootstrapDependencyProcessingException {
log.debugf("Injecting deployment dependency %s", extDep.info.deploymentArtifact);
final DependencyNode deploymentNode = collectDependencies(extDep.info.deploymentArtifact, extDep.exclusions,
extDep.runtimeNode.getRepositories());
if (deploymentNode.getChildren().isEmpty()) {
throw new BootstrapDependencyProcessingException(
"Failed to collect dependencies of " + deploymentNode.getArtifact()
+ ": either its POM could not be resolved from the available Maven repositories "
+ "or the artifact does not have any dependencies while at least a dependency on the runtime artifact "
+ extDep.info.runtimeArtifact + " is expected");
}
if (resolver.getProjectModuleResolver() != null && collectReloadableModules) {
clearReloadable(deploymentNode);
}
extDep.replaceRuntimeExtensionNodes(deploymentNode);
if (!extDep.presentInTargetGraph) {
throw new BootstrapDependencyProcessingException(
"Quarkus extension deployment artifact " + deploymentNode.getArtifact()
+ " does not appear to depend on the corresponding runtime artifact "
+ extDep.info.runtimeArtifact);
}
final DependencyNode runtimeNode = extDep.runtimeNode;
runtimeNode.setData(QUARKUS_RUNTIME_ARTIFACT, runtimeNode.getArtifact());
runtimeNode.setArtifact(deploymentNode.getArtifact());
runtimeNode.getDependency().setArtifact(deploymentNode.getArtifact());
runtimeNode.setChildren(deploymentNode.getChildren());
}
private void clearReloadable(DependencyNode node) {
for (DependencyNode child : node.getChildren()) {
clearReloadable(child);
}
final ResolvedDependencyBuilder dep = appBuilder.getDependency(getKey(node.getArtifact()));
if (dep != null) {View on GitHub (pinned to e1c734241f)
Solutions
- Inspect the deployment artifact's effective POM (mvn dependency:tree -f ...-deployment) and confirm a dependency on the runtime artifact
- Remove exclusions or dependencyManagement overrides that drop the runtime artifact from the graph
- Align extension runtime/deployment versions — never manage runtime and deployment versions independently
- Rebuild/re-publish the deployment artifact with a proper dependency on the runtime artifact
Example fix
// before: managed version forces different runtime version dependencyManagement pins acme-quarkus-extension:0.9.0 while deployment is 1.0.0 // after Remove the override or pin both to 1.0.0
Defensive patterns
Strategy: validation
Validate before calling
// Pre-check: deployment POM must depend on the runtime artifact with matching version // mvn -f acme-quarkus-extension-deployment/pom.xml dependency:tree | grep acme-quarkus-extension$ // In BOM usage, ensure both are managed together: // <dependency><groupId>com.acme</groupId><artifactId>acme-quarkus-extension-bom</artifactId>...
Prevention
- Import the extension's BOM rather than managing runtime/deployment versions separately
- Never exclude the runtime artifact from a deployment dependency
- Keep extension runtime and deployment artifacts at identical versions
- Run mvn dependency:tree on the deployment module when upgrading extensions
When it happens
Trigger: Deployment artifact collected successfully and its tree is non-empty, but extDep.presentInTargetGraph is false — i.e. version conflicts/exclusions/managed-dependency overrides removed the runtime artifact from the deployment graph, or the deployment POM genuinely lacks the runtime dependency.
Common situations: A BOM/dependencyManagement pins a different runtime artifact version so unification drops the node; user added an exclusion of the runtime artifact; hand-written deployment POM without the runtime dependency; partially applied version upgrades of an extension.
Related errors
- Failed to inject extension deployment dependencies
- Failed to collect dependencies of
- Failed to resolve descriptor for
- quarkus update artifacts require multiple rewrite plugin ver
- Unable to determine groupId and artifactId of the jar that c
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/449cd166368c24ba.
Report an issue: GitHub.