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

Android Gradle Groovy脚本中SnakeYaml/YamlSlurper使用及依赖问题

解决Gradle脚本无法引入SnakeYaml的问题

问题根源

你大概率是把SnakeYaml依赖加到了根build.gradle的普通项目依赖块里,而非构建脚本专属的buildscript.dependencies块。构建脚本(包括通过apply from引入的外部脚本)的依赖必须声明在buildscript内部,才能被Gradle的构建脚本类加载器识别。

修复步骤

1. 修正根build.gradle的依赖配置

把SnakeYaml移到buildscript的dependencies中,同时确保仓库包含Maven Central:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.2.0'
        classpath 'org.yaml:snakeyaml:2.2' // 放在这个块里
    }
}

// 下面是项目依赖块,和构建脚本无关,别在这里放SnakeYaml
dependencies {
    // ... 应用模块的依赖
}

2. 在script1.gradle中使用SnakeYaml

现在可以正常导入并读取YAML文件了:

import org.yaml.snakeyaml.Yaml

def yamlConfig = file('your/config.yaml')
def yamlParser = new Yaml()
def configData = yamlParser.load(yamlConfig.text)

// 示例:访问配置项
println configData.appVersion

关于Groovy YamlSlurper的说明

AGP 8.2.0对应的Gradle版本(8.2)使用的Groovy裁剪了groovy-yaml模块,所以import groovy.yaml.YamlSlurper会失效。用SnakeYaml是更可靠的方案,不用折腾Groovy的模块配置。

是否需要转为插件?

完全不需要。只要构建脚本的依赖配置正确,普通的apply from脚本就能正常使用SnakeYaml。转插件只是封装复用的方案,当前场景没必要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 07:02:12