Преобразование groovy в kotlin dsl

Привет всем, я использую библиотеку appDynamics, и документация объясняет только groovy Gradle, у меня проблема с преобразованием сценария groovy Gradle в kotlin Gradle DSL, и я пробовал несколько способов и несколько синтаксисов, и я даже использовал инструменты преобразования из groovy в Kotlin Gradle. не решил проблему после скрипта с groovy Gradle

adeum {
    
    account {
        name 'xxx'
        licenseKey 'yyyy'
    }
    proguardMappingFileUpload {
        failBuildOnUploadFailure true //should build fail if upload fails? Defaults to false.
        enabled true //enables automatic uploads. Defaults to true.
    }
}

[Ошибка][1] [1]: https://i.stack.imgur.com/tet7q.png

а также я должен упомянуть, что groovy работает нормально

Это ваш настоящий лицензионный ключ и имя учетной записи? Наверное, лучше не размещать это в Интернете, если это так

tim_yates 27.09.2022 20:10

Не все плагины Gradle работают в Kotlin... некоторые плагины могут использовать функции Groovy, что делает практически невозможным их использование из других языков JVM. Если у вас нет сложных файлов Gradle, просто используйте Groovy DSL, если это работает... тратить время на то, чтобы заставить Kotlin работать с простым файлом Gradle, может быть не лучшим использованием вашего времени.

Renato 27.09.2022 21:23

У вас есть простой пример работающей отличной сборки DSL, на которую мы можем посмотреть, чтобы найти эквивалент kotlin?

tim_yates 28.09.2022 11:46

Нет, это просто случайные ключи @tim_yates

shehab osama 28.09.2022 13:21

вы правы @Renato Я решил это, написав код Kotlin, который использует Closure для приема этих плагинов.

shehab osama 28.09.2022 13:26

Ах, я не знал, что в Котлине можно создавать замыкания Groovy.

Renato 28.09.2022 16:49
0
6
181
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проблема в том, что в некоторых плагинах в ктс приходится использовать замыкание для определения пакетов плагинов

 adeum {
           account(closureOf<com.appdynamics.android.gradle.ADPluginExtension.Account> {
            this.name  = "xxx"
            this.licenseKey  = "yyy"
    
        })
        proguardMappingFileUpload(closureOf<com.appdynamics.android.gradle.ADPluginExtension.ProguardConfig> {
            this.failBuildOnUploadFailure = true
            this.enabled = true
        })
    }

Можно изменить adeum на configure<ADPluginExtension>, например:

configure<ADPluginExtension> {
           account(closureOf<com.appdynamics.android.gradle.ADPluginExtension.Account> {
            this.name  = "xxx"
            this.licenseKey  = "yyy"
    
        })
        proguardMappingFileUpload(closureOf<com.appdynamics.android.gradle.ADPluginExtension.ProguardConfig> {
            this.failBuildOnUploadFailure = true
            this.enabled = true
        })
    }

У меня были некоторые проблемы при использовании плагина adeum с kotlin-dsl, где синхронизация gradle не генерировала расширения для доступа к android, dependencies, implementation и т. д., предоставленные из плагина kotlin-dsl.

Другие вопросы по теме