在無法將使用 JVM 目標 1.8 構建的行內位元組碼轉換為使用 JVM 目標 1.6 構建的位元組碼中的一些答案之后,我有一個 Kotlin Gradle DSL 腳本,其中包含
tasks.compileKotlin {
sourceCompatibility = JavaVersion.VERSION_11.toString()
targetCompatibility = JavaVersion.VERSION_11.toString()
kotlinOptions {
jvmTarget = "11"
}
}
但升級到 Kotlin 1.7.0 后我得到了例外
Unresolved reference: sourceCompatibility
Unresolved reference: targetCompatibility
我很清楚他們顯然已經洗掉了這些,因為我發現它列在https://kotlinlang.org/docs/whatsnew17.html#changes-in-compile-tasks
我的問題是,我用什么代替它?我應該如何確保保持兼容性?
uj5u.com熱心網友回復:
設定 JVM 目標,以及 Kotlin API 和語言版本可以通過配置所有KotlinCompile任務來完成。
// build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
kotlin("jvm") version "1.7.0"
}
// configure all Kotlin compilation tasks,
// using the Gradle configuration avoidance API
tasks.withType<KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = "11"
apiVersion = "1.6"
languageVersion = "1.6"
}
// you can also add additional compiler args,
// like opting in to experimental features
kotlinOptions.freeCompilerArgs = listOf(
"-opt-in=kotlin.RequiresOptIn",
)
}
apiVersion將宣告的使用限制為來自指定版本的捆綁庫的宣告languageVersion表示編譯后的代碼將與指定版本的 Kotlin 兼容
此處記錄了所有編譯器選項。還有其他構建工具的附加檔案,例如 Maven 和 Ant。
您可以使用新的工具鏈功能來設定將用于編譯專案的 Java 版本。
// build.gradle.kts
kotlin {
jvmToolchain {
languageVersion.set(JavaLanguageVersion.of("11"))
}
}
閱讀更多:Gradle Java 工具鏈支持
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/493013.html
