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

  1. Rebuild the extension with quarkus-extension-maven-plugin so the deployment-artifact property is written into the POM
  2. Remove the non-extension jar from extension dependency resolution if it was never a Quarkus extension
  3. Upgrade the extension to a Quarkus version consistent with the platform BOM
  4. 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

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


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/722463398e738c12. Report an issue: GitHub.