假设我在
buildSrc
下有一个Kotlin脚本:
// buildSrc/src/main/kotlin/greet.gradle.kts
fun Project.greet(greeting: String) {
println("$greeting from ${this.name}")
}
我想在另一个脚本中启用功能
greet
:
apply(from = "greet.gradle.kts")
apply(plugin = "greet")
greet("me")
但是都没有
apply works
,我仍然收到以下错误:
Unresolved reference: greet
正确的做法是什么?
要使某个函数可在 Gradle Kotlin 脚本 (kts) DSL 中的其他脚本中使用,您需要在 buildSrc/src/main/kotlin 目录内的单独 Kotlin 文件中定义该函数。该目录被 Gradle 视为包含的构建,这意味着它可以包含自己的依赖项,并可用于跨多个项目共享代码。
您可以这样做:
在 buildSrc/src/main/kotlin 目录中创建一个新的 Kotlin 文件。我们称之为 Greeting.kt。
// buildSrc/src/main/kotlin/Greeting.kt
package com.example
fun Project.greet(greeting: String) {
println("$greeting from ${this.name}")
}
在您的 build.gradle.kts 文件中,您现在可以导入并使用greet 函数。
// build.gradle.kts
import com.example.greet
greet("me")
这会将我从 rootProjectName 打印到控制台。
请注意,buildSrc 目录必须与您的 build.gradle.kts 文件处于同一级别。如果不是,您需要移动它。
另外,请记住在将新文件添加到 buildSrc 后刷新您的 Gradle 项目。在大多数 IDE 中,可以通过单击 Gradle 工具窗口中的“刷新所有 Gradle 项目”按钮来完成此操作。