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

问题描述 投票:0回答:1

假设我在

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 gradle-plugin gradle-kotlin-dsl
1个回答
0
投票

要使某个函数可在 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 项目”按钮来完成此操作。

© www.soinside.com 2019 - 2024. All rights reserved.