Gradle构建Jenkins插件时Guava依赖变体选择错误修复咨询
解决Jenkins插件项目中Guava依赖变体选择错误的问题
这个错误是因为Gradle无法自动确定要使用Guava的JRE还是Android变体——Jenkins插件是纯Java项目,应该绑定JRE变体,但依赖解析时没明确指定导致的。固定版本没用是因为问题核心不是版本冲突,而是变体选择逻辑,试试下面几种方案:
强制指定JRE变体属性
在build.gradle中通过属性约束明确要求Gradle选择Guava的JRE变体:dependencies { constraints { implementation('com.google.guava:guava') { attributes { attribute(TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE, objects.named(TargetJvmEnvironment, TargetJvmEnvironment.JRE)) } } } }或者全局配置所有Guava依赖都用JRE变体:
configurations.all { attributes { attribute(TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE, objects.named(TargetJvmEnvironment, TargetJvmEnvironment.JRE)) } }配置变体过滤规则
直接过滤掉Android相关的Guava变体,只保留JRE相关的:dependencies { components { withModule('com.google.guava:guava') { allVariants { if (variant.name.contains('android')) { skip() } } } } }检查Jenkins插件Gradle插件版本
确保你使用的io.jenkins.plugin插件版本是较新的,旧版本可能对现代Gradle的变体解析支持不足。比如更新到稳定版本:plugins { id 'io.jenkins.plugin' version '0.82.0' }排除传递引入的Android版Guava
如果是某个第三方依赖间接引入了Android变体的Guava,直接在依赖声明中排除:dependencies { implementation('your.problem.dependency:xxx:1.0') { exclude group: 'com.google.guava', module: 'guava' } }
执行完配置修改后,先运行gradle clean再重新执行gradle compileGroovy,应该就能解决变体选择的问题。
内容的提问来源于stack exchange,提问作者user51
相关产品推荐
相关产品推荐

