如何使用 Gradle Kotlin DSL 从 gradle 脚本中调用单独的 .gradle 文件中的函数?

Dap*_*app 10 groovy gradle kotlin gradle-kotlin-dsl

基本上我想这样做:

使用其他 gradle 文件中的 Gradle 函数

也就是说,从一个 gradle 脚本中调用另一个函数中的一个函数。问题是我的 build.gradle 使用 Kotlin (build.gradle.kts),而我的函数所在的脚本仍然是 groovy。

我按照上面的 groovy-to-groovy 链接进行操作,但我无法使用 Kotlin DSL 使其工作。

在我的常规文件,functions.gradle 中,我有:

def buildVersionName() {
        //Do some stuff
}
Run Code Online (Sandbox Code Playgroud)

ext {
    buildVersionName = this.&buildVersionName
}
Run Code Online (Sandbox Code Playgroud)

然后,在我的 build.gradle.kts 脚本中,我有:

apply(from = "functions.gradle")
project.ext.buildVersionName()
Run Code Online (Sandbox Code Playgroud)

当我同步时,我收到错误:

Unresolved reference: buildVersionName
Run Code Online (Sandbox Code Playgroud)

kau*_*hik 8

在中build.gradle.kts执行以下操作:

import groovy.lang.Closure
apply(from="functions.gradle")
val buildVersionName: Closure<Any> by ext
buildVersionName()
Run Code Online (Sandbox Code Playgroud)