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
相关产品推荐
相关产品推荐

