Как импортировать KotlinMultiplatformExtension внутри модуля buildSrc?
Я разрабатываю мультиплатформенный проект kotlin, в котором есть куча модулей.
Я написал функцию расширения, которая предназначена для использования внутри каждого модуля. Функция расширения расширяет функциональность класса. Теперь этот код повторяется в файле build.gradle.kts каждого модуля . Поэтому я подумал, что было бы здорово переместить этот код в модуль buildSrc и использовать его везде.
Проблема в том, что внутри модуля buildSrc не разрешается.
Мой buildSrc/build.gradle.kts:
plugins {
`kotlin-dsl`
}
repositories {
jcenter()
}
Если я щелкну правой кнопкой мыши внутри 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?
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