簡體   English   中英

我可以在 Gradle 插件中配置 Kotlin 多平台模塊嗎?

[英]Can I configure a Kotlin Multiplatform module in a Gradle plugin?

我正在構建一個包含多個Kotlin Multiplatform模塊的項目。 正如Gradle 文檔所建議的,為了在這些模塊之間共享配置,我創建了一個自定義插件。 這個插件應該應用kotlin-multiplatform插件和共享配置,但不幸的是它無法解析應用多平台配置的kotlin擴展。

我的插件( buildSrc\\src\\main\\kotlin\\my.pugin.gradle.kts ):

plugins {
    kotlin("multiplatform")
}

kotlin {
    val hostOs = System.getProperty("os.name")
    val isMingwX64 = hostOs.startsWith("Windows")
    val nativeTarget = when {
        hostOs == "Mac OS X" -> macosX64("native")
        hostOs == "Linux" -> linuxX64("native")
        isMingwX64 -> mingwX64("native")
        else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
    }

    sourceSets {
        val commonMain by getting
        val commonTest by getting {
            dependencies {
                implementation(kotlin("test-common"))
                implementation(kotlin("test-annotations-common"))
            }
        }
    }

    jvm {
        val main by compilations.getting {
            kotlinOptions {
                jvmTarget = "1.8"
            }
        }
    }
}

錯誤:

未解決的參考。 由於接收器類型不匹配,以下候選者都不適用: public fun DependencyHandler.kotlin(module: String, version: String? = ...): Any defined in org.gradle.kotlin.dsl public fun PluginDependenciesSpec.kotlin(module : String): PluginDependencySpec 定義在 org.gradle.kotlin.dsl

顯然,您需要的是在buildSrc\\build.gradle.ktskotlin-gradle-plugin上添加buildSrc的依賴buildSrc\\build.gradle.kts

dependencies {
    //...
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
    //...
}

編輯: $kotlin_version在此范圍內不可用,您需要明確指定它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM