提问人:tribbloid 提问时间:11/6/2023 最后编辑:tribbloid 更新时间:11/6/2023 访问量:27
在 Gradle Kotlin 脚本 (kts) DSL 中,如何使函数在其他脚本中可用?
In Gradle Kotlin script (kts) DSL, how to make a function usable in other scripts?
问:
假设我有一个 Kotlin 脚本:buildSrc
// 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
正确的方法是什么?
答:
0赞
Oleksii Shtanko
11/6/2023
#1
要使函数在 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 项目”按钮来完成此操作。
评论
0赞
tribbloid
11/6/2023
不幸的是,kt 文件将无法使用其他类扩展,例如 dependencies { implementation { ...}}。我只能使用 kts 文件,而不能使用 kt 文件
评论