Gradle 9出现'Unresolved reference 'exec''错误的原因咨询
Gradle 9中"Unresolved reference 'exec'"报错原因及解决办法
报错原因
Gradle 9对Kotlin DSL的作用域规则做了严格调整,移除了Gradle 8及更早版本中tasks.register闭包内的隐式exec扩展函数。旧版本里Gradle会在该作用域默认导入相关扩展,允许直接调用exec;但Gradle 9收紧了作用域边界,不再提供这个隐式支持,导致编译器无法识别exec引用。
另外你的原代码还存在一个语法错误:commandLine的括号未闭合,这也需要同步修正。
解决办法
有两种常用修复方式:
方式1:直接注册Exec类型任务
明确指定任务类型为Exec,无需手动调用exec函数:
tasks.register<Exec>("myTask") { commandLine("sh", "-c", "myscript.sh") }
方式2:通过project显式调用exec
如果需要在自定义任务逻辑中执行exec操作,可通过project对象显式调用exec方法:
tasks.register("myTask") { doLast { project.exec { commandLine("sh", "-c", "myscript.sh") } } }
内容的提问来源于stack exchange,提问作者Dan Fabulich
相关产品推荐
相关产品推荐

