在GradleKotlin脚本(kts)DSL中,如何使函数在其他脚本中可用?

nzk0hqpo  于 2023-11-18  发布在  Kotlin
关注(0)|答案(1)|浏览(186)

假设我在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


怎么做才合适呢?

oewdyzsn

oewdyzsn1#

要在GradleKotlin脚本(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项目”按钮来完成此操作。

相关问题