如何在我的 Kotlin Gradle 脚本中引用 Groovy 脚本插件提供的 "ext" 属性?

How to reference "ext" property provided by a Groovy script plugin in my Kotlin Gradle script?

我正在尝试将 build.gradle 迁移到 build.gradle.kts,但遇到此错误:

  Line 036: ext.pluginInfo.licenses = ["Apache-2.0"]
                ^ Unresolved reference: pluginInfo

原始 build.gradle“包含”另一个脚本,然后从该脚本引用 pluginInfo

apply from: "rubyUtils.gradle"
pluginInfo.licenses = ["Apache-2.0"]

这是 rubyUtils.gradle 的(缩短)部分,提供 pluginInfo(我猜):

ext {
    pluginInfo = new PluginInfo()
}

这是我在 Kotlin 中想到的。这就导致了开头提到的错误:

apply(from = "rubyUtils.gradle")
ext.pluginInfo.licenses = ["Apache-2.0"]

问题:

  1. 是否可以在 Kotlin 脚本中“导入”Groovy Gradle 脚本(在 Kotlin 脚本中应用 Groovy 脚本插件)?
  2. 如果可能:如何正确引用pluginInfo
  3. 那整个“分机”到底是什么东西? :-)
  1. 是的,您可以在 Kotlin 和 vice-versa 中导入 Groovy 脚本。不幸的是,您可能会遇到 class 加载问题。
  2. val pluginInfo by extra 是您根据 the documentation
  3. 查找的符号
  4. 总之是Gradle长期存在的扩展系统,请谨慎使用。同样,请查看上面链接的文档以获取更多详细信息。