quarkusio/quarkus · error · GradleException

Trying to add ${capability.getName()} variant which is not d

Error message

Trying to add ${capability.getName()} variant which is not declared by ${extensionId.getName()} extension.

What it means

This Gradle error is thrown by ExtensionDependency.importConditionalDependency when a capability module is being imported as a conditional dependency, but the targeted extension does not actually declare a matching conditional dependency variant for that capability. Gradle capability matching relies on the extension publishing variant metadata (withDependencies blocks) for each optional capability; without a declared variant, Quarkus cannot resolve which artifact to inject.

Source

Thrown at devtools/gradle/gradle-model/src/main/java/io/quarkus/gradle/tooling/dependency/ExtensionDependency.java:36

    private final List<Dependency> conditionalDevDeps;
    private final List<ArtifactKey> dependencyConditions;
    private boolean isConditional;

    public ExtensionDependency(ModuleVersionIdentifier extensionId, T deploymentModule,
            List<Dependency> conditionalDependencies, List<Dependency> conditionalDevDeps,
            List<ArtifactKey> dependencyConditions) {
        this.extensionId = extensionId;
        this.deploymentModule = deploymentModule;
        this.conditionalDependencies = conditionalDependencies;
        this.conditionalDevDeps = conditionalDevDeps;
        this.dependencyConditions = dependencyConditions;
    }

    public void importConditionalDependency(DependencyHandler dependencies, ModuleVersionIdentifier capability) {
        Dependency dependency = findConditionalDependency(capability);

        if (dependency == null) {
            throw new GradleException("Trying to add " + capability.getName() + " variant which is not declared by "
                    + extensionId.getName() + " extension.");
        }

        dependencies.components(handler -> handler.withModule(toModuleName(),
                componentMetadataDetails -> componentMetadataDetails.allVariants(variantMetadata -> variantMetadata
                        .withDependencies(d -> d.add(DependencyUtils.asDependencyNotation(dependency))))));
    }

    private Dependency findConditionalDependency(ModuleVersionIdentifier capability) {
        final Dependency dep = findConditionalDependency(capability, conditionalDependencies);
        if (dep != null) {
            return dep;
        }
        return findConditionalDependency(capability, conditionalDevDeps);
    }

    private static Dependency findConditionalDependency(ModuleVersionIdentifier capability, List<Dependency> deps) {
        for (Dependency conditionalDependency : deps) {

View on GitHub (pinned to e1c734241f)

Solutions

  1. Check the extension's published variant metadata ( Gradle dependency insight) to confirm the capability it declares.
  2. Align the capability-providing artifact's version with the Quarkus BOM version in use.
  3. Remove the capability artifact if the extension does not support it, or switch to an extension version that declares the capability.
Defensive patterns

Strategy: validation

Validate before calling

def canImport(dep, capabilityName) { dep.capabilityNames?.contains(capabilityName) }
if (!canImport(extensionDep, capability.getName())) { throw new IllegalStateException("Capability ${capability.getName()} not declared by ${extensionId.getName()}") }

Try / catch

try { dep.importConditionalDependency(dependencies, capability) } catch (GradleException e) { logger.warn("Skipping capability: ${e.message}"); }

Prevention

When it happens

Trigger: Calling importConditionalDependency(dependencies, capability) with a ModuleVersionIdentifier whose capability name is not present in the extension's declared conditional dependency list — i.e. findConditionalDependency(capability) returns null.

Common situations: Using a library that advertises a capability (e.g. a YAML provider or logging implementation) that the resolved Quarkus extension version does not actually support; version mismatch between the extension BOM and the capability-providing artifact; typos or renamed capabilities across Quarkus versions.

Related errors


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