【问题标题】:Unresolved reference: compileKotlin in build.gradle.kts未解决的参考:build.gradle.kts 中的 compileKotlin
【发布时间】:2019-08-22 16:21:45
【问题描述】:

由 build.gradle 构建的 Kotlin 项目成功:

compileKotlin {
    kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8
}
compileTestKotlin {
    kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8
}

不错。

但是我需要改成build.gradle.kts

 plugins {
    kotlin("jvm") version "1.2.10"
    id("application")
}

group = "com.myproject"
version = "1.0-SNAPSHOT"

application {
    mainClassName = "MainKt"
}

java.sourceCompatibility = JavaVersion.VERSION_1_8

repositories {
    mavenCentral()
    jcenter()
}

val kotlinVer = "1.2.10"

dependencies {
    compile(kotlin(module = "stdlib-jre8", version = kotlinVer))
    implementation("com.google.code.gson:gson:2.7")
    implementation("com.squareup.okhttp3:logging-interceptor:3.8.0")
    implementation("com.squareup.retrofit2:converter-gson:2.1.0")
    implementation("com.squareup.retrofit2:retrofit:2.5.0")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")

}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

现在我得到错误:

Line 32: compileKotlin {
           ^ Unresolved reference: compileKotlin

【问题讨论】:

标签: gradle kotlin gradle-kotlin-dsl


【解决方案1】:

按照 Kotlin 官方文档 (using Gradle part),我建议在 build.gradle.kts 中使用这样的结构:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    java
    kotlin("jvm") version ("1.3.21")
}
// repositories, dependencies, etc...
val compileKotlin: KotlinCompile by tasks
val compileTestKotlin: KotlinCompile by tasks

compileKotlin.kotlinOptions {
    jvmTarget = "1.8"
}
compileTestKotlin.kotlinOptions {
    jvmTarget = "1.8"
}

【讨论】:

  • compileTestKotlincompileKotlin 之间应该没有区别。还是我错过了什么?
【解决方案2】:

Kotlin Gradle DSL 中存在导致此问题的问题。

https://github.com/gradle/kotlin-dsl-samples/issues/1368

在解决之前,您需要使用以下解决方法。

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

【讨论】:

  • 关于如何扩展此任务的任何想法?我想创建一个编译 kotlin 文件的自定义任务。
  • 应该先导入KotlinCompileimport org.jetbrains.kotlin.gradle.tasks.KotlinCompile
【解决方案3】:

使用withType关键字:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    val kotlin = "1.3.61"
    kotlin("jvm") version kotlin apply false
}

subprojects {
    repositories { mavenCentral(); mavenLocal() }
    apply(plugin = "org.jetbrains.kotlin.jvm")

    tasks {
        val java: String by project
        withType<KotlinCompile>{ 
            kotlinOptions { jvmTarget = java }; sourceCompatibility = java; targetCompatibility = java 
        }
    }
}


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2021-08-17
    • 2016-12-14
    • 2020-05-27
    • 2019-11-16
    • 2021-01-24
    相关资源
    最近更新 更多