未解析的参考:在build.gradle.kts中编译Kotlin



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

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

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 文档(使用 Gradle 部分),我建议在 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"
}

使用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 
}
}
}

不相关:Unresolved reference: compile

我能够将依赖项提供给implementation()而不是compile()

// build.grdle.kts
//...
dependencies {
//- compile("com.cloudbees:groovy-cps:1.22)
//+ implementation("com.cloudbees:groovy-cps:1.22)
implementation("com.cloudbees:groovy-cps:1.22)
}
//...

这篇文章说apiimplementation关键字是compile关键字的继承者 Gradle 实现与 API 配置

编辑:谷歌为Unresolved reference: compile提出了这个问题

相关内容

  • 没有找到相关文章

最新更新