やること
Kotlin
のプロジェクトで、compileKotlin
時にktlint
を走らせます。
また、環境変数によって実行結果を分けます。
build.gradle
はKotlin-DSL
で書きます。
準備: ktlintの導入
以下のように行いました。
build.gradle.kts
plugins {
/* 略 */
id("org.jlleitschuh.gradle.ktlint") version "9.2.1"
}
やりかた
以下のように、compileKotlin
タスクにdependsOn
でktlint
の実行を指定してやればできます。
サンプルではビルド前にフォーマッティングまでやっています。
build.gradle.kts
tasks.compileKotlin {
dependsOn("ktlintFormat")
kotlinOptions {
jvmTarget = "1.8"
}
}
応用
環境変数を使って「ローカルでは自動修復してエラー無しで続行、CI環境ではエラー」というように動作を分けることもやってみました。
build.gradle.kts
tasks.compileKotlin {
val lintOption: String = if (System.getenv("IS_CI")?.toBoolean() == true) {
"ktlintCheck" // CI環境ならチェック(失敗すると落ちる)
} else {
"ktlintFormat" // CI環境じゃなければfix(自動修正を走らせる)
}
dependsOn(lintOption)
kotlinOptions {
jvmTarget = "1.8"
}
}