Как импортировать KotlinMultiplatformExtension внутри модуля buildSrc?

Я разрабатываю мультиплатформенный проект kotlin, в котором есть куча модулей.

Я написал функцию расширения, которая предназначена для использования внутри каждого модуля. Функция расширения расширяет функциональность класса KotlinMultiplatformExtension. Теперь этот код повторяется в файле build.gradle.kts каждого модуля. Поэтому я подумал, что было бы здорово переместить этот код в модуль buildSrc и использовать его везде.

Проблема в том, что внутри buildSrc модуль KotlinMultiplatformExtension не разрешен.

Расширение KotlinMultiplatformExtension не разрешено

Мой buildSrc/build.gradle.kts:

plugins {
    `kotlin-dsl`
}
repositories {
    jcenter()
}

Если я щелкну правой кнопкой мыши KotlinMultiplatformExtension внутри someModule/build.gradle.kts

мне нужно:

введите здесь описание изображения

Поэтому я предположил, что добавление зависимости внутри buildSrc/build.gradle.kts должно помочь:

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10")
}

Но добавление этого приводит к ошибке:

* Exception is:
java.lang.NoClassDefFoundError: com/android/build/gradle/BaseExtension
    at org.jetbrains.kotlin.gradle.plugin.AbstractAndroidProjectHandler.configureTarget(KotlinPlugin.kt:765)
    at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin$Companion.applyToTarget(KotlinPlugin.kt:727)
    at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.apply(KotlinPlugin.kt:689)
    at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.apply(KotlinPlugin.kt:678)
    at org.jetbrains.kotlin.gradle.plugin.KotlinBasePluginWrapper.apply(KotlinPluginWrapper.kt:102)

Есть идеи, как сделать KotlinMultiplatformExtension доступным внутри buildSrc?


person RadekJ    schedule 02.02.2021    source источник


Ответы (1)


Получается, что меняется

implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10")

в

compileOnly("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10")

решает проблему с исключением (java.lang.NoClassDefFoundError: com/android/build/gradle/BaseExtension)

и делает KotlinMultiplatformExtension доступным в исходных файлах buildSrc.

решение найдено здесь: https://github.com/gradle/gradle/issues/9209

person RadekJ    schedule 02.02.2021