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"
}

//OR

tasks.withType {
    kotlinOptions {
        freeCompilerArgs += listOf("-module-name", "my_module_name")
    }
}

이 검사는 변경된 타입이 있는 옵션에 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)
}