{"record":{"id":"80b3840c23dc9b62","repo":"quarkusio/quarkus","slug":"trying-to-add-capability-getname-variant-whic","errorCode":null,"errorMessage":"Trying to add ${capability.getName()} variant which is not declared by ${extensionId.getName()} extension.","messagePattern":"Trying to add (.+?) variant which is not declared by (.+?) extension\\.","errorType":"exception","errorClass":"GradleException","httpStatus":null,"severity":"error","filePath":"devtools/gradle/gradle-model/src/main/java/io/quarkus/gradle/tooling/dependency/ExtensionDependency.java","lineNumber":36,"sourceCode":"    private final List<Dependency> conditionalDevDeps;\n    private final List<ArtifactKey> dependencyConditions;\n    private boolean isConditional;\n\n    public ExtensionDependency(ModuleVersionIdentifier extensionId, T deploymentModule,\n            List<Dependency> conditionalDependencies, List<Dependency> conditionalDevDeps,\n            List<ArtifactKey> dependencyConditions) {\n        this.extensionId = extensionId;\n        this.deploymentModule = deploymentModule;\n        this.conditionalDependencies = conditionalDependencies;\n        this.conditionalDevDeps = conditionalDevDeps;\n        this.dependencyConditions = dependencyConditions;\n    }\n\n    public void importConditionalDependency(DependencyHandler dependencies, ModuleVersionIdentifier capability) {\n        Dependency dependency = findConditionalDependency(capability);\n\n        if (dependency == null) {\n            throw new GradleException(\"Trying to add \" + capability.getName() + \" variant which is not declared by \"\n                    + extensionId.getName() + \" extension.\");\n        }\n\n        dependencies.components(handler -> handler.withModule(toModuleName(),\n                componentMetadataDetails -> componentMetadataDetails.allVariants(variantMetadata -> variantMetadata\n                        .withDependencies(d -> d.add(DependencyUtils.asDependencyNotation(dependency))))));\n    }\n\n    private Dependency findConditionalDependency(ModuleVersionIdentifier capability) {\n        final Dependency dep = findConditionalDependency(capability, conditionalDependencies);\n        if (dep != null) {\n            return dep;\n        }\n        return findConditionalDependency(capability, conditionalDevDeps);\n    }\n\n    private static Dependency findConditionalDependency(ModuleVersionIdentifier capability, List<Dependency> deps) {\n        for (Dependency conditionalDependency : deps) {","sourceCodeStart":18,"sourceCodeEnd":54,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/gradle/gradle-model/src/main/java/io/quarkus/gradle/tooling/dependency/ExtensionDependency.java#L18-L54","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"def canImport(dep, capabilityName) { dep.capabilityNames?.contains(capabilityName) }\nif (!canImport(extensionDep, capability.getName())) { throw new IllegalStateException(\"Capability ${capability.getName()} not declared by ${extensionId.getName()}\") }","typeGuard":null,"tryCatchPattern":"try { dep.importConditionalDependency(dependencies, capability) } catch (GradleException e) { logger.warn(\"Skipping capability: ${e.message}\"); }","preventionTips":["Keep capability-providing artifacts versioned with the Quarkus BOM.","Inspect published variant metadata before importing capabilities.","Pin extension versions explicitly in dependency management."],"tags":["gradle","dependency-resolution","capabilities"],"backgroundTag":"gradle-capability-conflict","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}