quarkusio/quarkus · error · BootstrapDependencyProcessingException
Extension descriptor from ${runtimeArtifact} does not includ
Error message
Extension descriptor from ${runtimeArtifact} does not include deployment-artifact What it means
ExtensionInfo parses a Quarkus extension's runtime POM properties to find the deployment artifact. This BootstrapDependencyProcessingException is thrown when the extension descriptor (POM properties) lacks the quarkus.extension.deployment-artifact property, so the corresponding deployment artifact cannot be determined.
Source
Thrown at independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ExtensionInfo.java:67
void ensureActivated(ApplicationModelBuilder appBuilder) {
if (activated) {
return;
}
activated = true;
appBuilder.handleExtensionProperties(props, getKey(runtimeArtifact));
final String providesCapabilities = props.getProperty(BootstrapConstants.PROP_PROVIDES_CAPABILITIES);
final String requiresCapabilities = props.getProperty(BootstrapConstants.PROP_REQUIRES_CAPABILITIES);
if (providesCapabilities != null || requiresCapabilities != null) {
appBuilder.addExtensionCapabilities(
CapabilityContract.of(toCompactCoords(runtimeArtifact), providesCapabilities, requiresCapabilities));
}
}
private static Artifact initDeploymentArtifact(String deploymentArtifactStr, Artifact runtimeArtifact)
throws BootstrapDependencyProcessingException {
if (deploymentArtifactStr == null) {
throw new BootstrapDependencyProcessingException("Extension descriptor from " + runtimeArtifact
+ " does not include " + BootstrapConstants.PROP_DEPLOYMENT_ARTIFACT);
}
final Artifact deploymentArtifact = toArtifact(deploymentArtifactStr);
return deploymentArtifact.getVersion() == null || deploymentArtifact.getVersion().isEmpty()
? deploymentArtifact.setVersion(runtimeArtifact.getVersion())
: deploymentArtifact;
}
private Artifact[] initConditionalDeps(boolean devMode) throws BootstrapDependencyProcessingException {
return devMode
? toArtifactArray(
joinAndDedupe(splitConditionalDeps(props.getProperty(BootstrapConstants.CONDITIONAL_DEPENDENCIES)),
splitConditionalDeps(props.getProperty(BootstrapConstants.CONDITIONAL_DEV_DEPENDENCIES))),
runtimeArtifact)
: toArtifactArray(splitConditionalDeps(props.getProperty(BootstrapConstants.CONDITIONAL_DEPENDENCIES)),
runtimeArtifact);
}
View on GitHub (pinned to e1c734241f)
Solutions
- Rebuild the extension with quarkus-extension-maven-plugin so the deployment-artifact property is written into the POM
- Remove the non-extension jar from extension dependency resolution if it was never a Quarkus extension
- Upgrade the extension to a Quarkus version consistent with the platform BOM
- Check the runtime POM's <properties> for quarkus.extension.deployment-artifact and add it manually if hand-maintained
Example fix
// before (extension pom, missing descriptor) <properties></properties> // after <properties> <quarkus.extension.deployment-artifact>com.acme:my-ext-deployment:1.0.0</quarkus.extension.deployment-artifact> </properties>
Defensive patterns
Strategy: validation
Validate before calling
Properties props = readPomProperties(runtimePom);
String dep = props.getProperty("quarkus.extension.deployment-artifact");
if (dep == null || dep.isBlank()) {
throw new IllegalArgumentException(runtimeArtifact + " is not a processed Quarkus extension (no deployment-artifact property)");
} Type guard
boolean isQuarkusExtension(java.util.Properties pomProps) {
return pomProps != null && pomProps.getProperty("quarkus.extension.deployment-artifact") != null;
} Prevention
- Always build extensions with quarkus-extension-maven-plugin
- Verify extension POMs contain quarkus.extension.* properties before use
- Only register true Quarkus extensions in extension resolution
When it happens
Trigger: Creating ExtensionInfo for a runtime artifact whose POM does not define BootstrapConstants.PROP_DEPLOYMENT_ARTIFACT — typically a plain (non-extension) jar mistakenly treated as a Quarkus extension, or an extension built without the quarkus-extension-maven-plugin processing.
Common situations: Using an old/custom jar as an extension dependency, extension POMs produced by hand or by old Quarkus versions before the descriptor property existed, misconfigured quarkus-extension-maven-plugin that skipped property injection.
Related errors
- Unable to parse pom file: ${pom}
- Failed to load extension description
- Could not resolve POM for
- Failed to log the dependency tree to a file
- Parameter 'mode' was set to '<mode>' while expected one of '
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/722463398e738c12.
Report an issue: GitHub.