报告 Gradle .kts 构建脚本中已弃用的 kotlinOptions DSL 的用法。

kotlinOptions DSL 在 Kotlin 2.0 中已被弃用。 该检查有助于从 kotlinOptions 迁移到 compilerOptions。 它还会更改多个使用新类型的选项,而不是 String 类型。

KotlinCompile 任务的示例:


val compileKotlin: KotlinCompile by tasks
compileKotlin.kotlinOptions {
    jvmTarget = "1.8"
    freeCompilerArgs = listOf("-module-name", "my_module_name")
    apiVersion = "1.9"
}

该检查还会为类型已更改的选项添加 import:


import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion

...

val compileKotlin: KotlinCompile by tasks
compileKotlin.compilerOptions {
    jvmTarget.set(JvmTarget.JVM_1_8)
    freeCompilerArgs.set(listOf("-module-name", "my_module_name"))
    apiVersion.set(KotlinVersion.KOTLIN_1_9)
}

Kotlin2JsCompile 任务的示例:


val compileKotlin: Kotlin2JsCompile by tasks
compileKotlin.kotlinOptions {
    moduleKind = "commonjs"
    sourceMapEmbedSources = "inlining"
    sourceMapNamesPolicy = "fully-qualified-names"
    main = "noCall"
}

应用该检查后:


import org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode
import org.jetbrains.kotlin.gradle.dsl.JsModuleKind
import org.jetbrains.kotlin.gradle.dsl.JsSourceMapEmbedMode
import org.jetbrains.kotlin.gradle.dsl.JsSourceMapNamesPolicy

...

val compileKotlin: Kotlin2JsCompile by tasks
compileKotlin.compilerOptions {
    moduleKind.set(JsModuleKind.MODULE_COMMONJS)
    sourceMapEmbedSources.set(JsSourceMapEmbedMode.SOURCE_MAP_SOURCE_CONTENT_INLINING)
    sourceMapNamesPolicy.set(JsSourceMapNamesPolicy.SOURCE_MAP_NAMES_POLICY_FQ_NAMES)
    main.set(JsMainFunctionExecutionMode.NO_CALL)
}