Gradle构建文件中使用列表报错,求正确实现方式
问题解决:Gradle闭包中迭代变量语法错误
错误原因是Groovy闭包内的迭代变量it不需要加$前缀,$仅用于字符串插值场景,直接引用it即可。
修正后的代码
外部Gradle文件(建议明确放在ext块中,确保变量能被其他脚本访问)
ext { test = [ ["testImplementation", "junit:junit:4.13.2"] ] list = [] list.addAll(test) }
app/build.gradle的dependencies块(两种写法可选)
写法1:保留it变量,去掉$
dependencies { list.each { if (it[0].equals("testImplementation")) { testImplementation it[1] } } }
写法2:显式命名迭代变量(可读性更好)
dependencies { list.each { depEntry -> if (depEntry[0].equals("testImplementation")) { testImplementation depEntry[1] } } }
优化写法(通用适配所有依赖配置)
如果你的列表里可能包含多种依赖配置(比如implementation、androidTestImplementation等),可以不用写判断逻辑,直接通过字符串转方法调用的方式添加:
dependencies { list.each { configName, depNotation -> delegate."${configName}"(depNotation) } }
这里delegate指向dependencies块的上下文,确保配置方法能被正确调用。
内容的提问来源于stack exchange,提问作者SageJustus
相关产品推荐
相关产品推荐

