You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java Catalog的build.gradle中排除依赖以避免加载android.jar

解决Gradle Catalog中SnakeYaml加载android.jar失败的问题

问题场景

在Gradle Catalog的build.gradle中声明如下依赖:

library('snakeyaml', 'org.yaml', 'snakeyaml').version('2.0')

编译测试代码时抛出如下错误:

执行失败,任务 ':compileTestJava' 出错。
无法解析配置 ':testCompileClasspath' 的所有文件。
找不到 snakeyaml-2.0-android.jar (org.yaml:snakeyaml:2.0)。
已在以下位置搜索:
https://repo.maven.apache.org/maven2/org/yaml/snakeyaml/2.0/snakeyaml-2.0-android.jar

解决方案

在Gradle Catalog本身中通过以下方式排除Android变体,强制使用标准JVM版本的SnakeYaml:

方式一:指定标准JVM变体能力

修改Catalog中的依赖声明,明确要求标准JVM能力的构件:

library('snakeyaml', 'org.yaml', 'snakeyaml') {
    version = '2.0'
    variant('runtimeElements') {
        capabilities {
            requireCapability('org.yaml:snakeyaml')
        }
    }
}

方式二:直接排除Android变体能力

通过排除Android专属的能力,避免Gradle尝试拉取android.jar:

library('snakeyaml', 'org.yaml', 'snakeyaml') {
    version = '2.0'
    excludeCapability('org.yaml:snakeyaml-android')
}

方式三:指定标准jar构件

直接指定拉取标准jar文件,跳过变体匹配:

library('snakeyaml', 'org.yaml', 'snakeyaml').version('2.0').artifact {
    name = 'snakeyaml'
    type = 'jar'
}

原因说明

SnakeYaml 2.0采用了多变体发布策略,包含标准JVM版和Android适配版。Gradle会根据项目环境自动匹配对应变体,若你的项目并非Android项目,却触发了Android变体的匹配逻辑,就会出现找不到对应jar包的错误。通过上述配置可强制Gradle拉取标准JVM版本的构件。

内容的提问来源于stack exchange,提问作者user352290

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 09:07:12