【问题标题】:How to import KotlinMultiplatformExtension inside buildSrc module?如何在 buildSrc 模块中导入 KotlinMultiplatformExtension?
【发布时间】:2021-05-06 11:23:15
【问题描述】:

我正在开发一个 kotlin 多平台项目,其中包含一堆模块。

我写了一个扩展函数,打算在每个模块中使用。扩展函数扩展了KotlinMultiplatformExtension 类的功能。现在该代码在每个模块的 build.gradle.kts 文件中重复。所以我认为将代码移动到 buildSrc moudle 并在任何地方重用会很棒。

问题是 buildSrc 模块 KotlinMultiplatformExtension 内部没有解决。

我的buildSrc/build.gradle.kts

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

如果我在 someModule/build.gradle.kts

中右键单击 KotlinMultiplatformExtension

它需要我:

所以我猜想在 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)

任何想法如何使KotlinMultiplatformExtensionbuildSrc 中可用?

【问题讨论】:

    标签: kotlin gradle kotlin-multiplatform kotlin-dsl kotlin-gradle-plugin


    【解决方案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)

    并使KotlinMultiplatformExtensionbuildSrc 的源文件中可用。

    在这里找到的解决方案: https://github.com/gradle/gradle/issues/9209

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 2021-02-13
      • 2016-07-08
      • 2011-11-07
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多