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
- Check the extension's published variant metadata ( Gradle dependency insight) to confirm the capability it declares.
- Align the capability-providing artifact's version with the Quarkus BOM version in use.
- 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
- Keep capability-providing artifacts versioned with the Quarkus BOM.
- Inspect published variant metadata before importing capabilities.
- Pin extension versions explicitly in dependency management.
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
- Failed to resolve ${appArtifact}
- Failed to import platform properties
- did not resolve to any artifacts
- Could not find project for
- Could not resolve POM for
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/80b3840c23dc9b62.
Report an issue: GitHub.