Как ссылаться на свойство «ext», предоставляемое плагином Groovy script в моем скрипте Kotlin Gradle?

#gradle #gradle-kotlin-dsl

#gradle #gradle-kotlin-dsl

Вопрос:

Я пытаюсь перенести a 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. Возможно ли вообще «импортировать» скрипт Groovy Gradle в скрипт Kotlin (применить плагин Groovy script в скрипте Kotlin)?
  2. Если это возможно: как мне правильно ссылаться pluginInfo ?
  3. И что это вообще за «ext»? 🙂

Ответ №1:

  1. Да, вы можете импортировать скрипты Groovy в Kotlin и наоборот. К сожалению, вы можете столкнуться с проблемами загрузки классов.
  2. val pluginInfo by extra является ли обозначение, которое вы ищете, в соответствии с документацией
  3. Короче говоря, это система расширений, которая уже давно находится в Gradle и должна использоваться с осторожностью. Опять же, взгляните на документацию, связанную выше, для получения более подробной информации.