[kotlog] 코프링으로 블로그 만들기 - 3 (ktlint 적용하기, kotlin 호환 문제)

dustle·2025년 6월 13일
1

kotlog

목록 보기
3/6

오늘은 ktlint 를 설정해보겠습니다.

ktlint는 Pinterest에서 만든 Kotlin 코드 스타일 자동 정리 도구입니다.
설정도 간단해서 Gradle plugin 만 추가하면 끝입니다.

1. Gradle plugin 추가

Gradle Plugin Portal에서 최신 버전을 확인해서 넣어줬습니다.

build.gradle.kts에 아래처럼 추가해줍니다:

plugins {
    kotlin("jvm") version "1.9.25"
    kotlin("plugin.spring") version "1.9.25"
    id("org.springframework.boot") version "3.5.0"
    id("io.spring.dependency-management") version "1.1.7"
    id("org.jlleitschuh.gradle.ktlint") version "13.0.0-rc.1"
    kotlin("plugin.jpa") version "1.9.25"
}

원래 GA 버전인 ktlint 12.3.0 버전을 사용하려고 했으나
Kotlin 2.1 버전대와 호환되지 않아 13.0.0-rc.1 버전을 사용하게 되었습니다.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':runKtlintFormatOverKotlinScripts'.
> A failure occurred while executing org.jlleitschuh.gradle.ktlint.worker.KtLintWorkAction
   > Class org.jetbrains.kotlin.lexer.KtTokens does not have member field 'org.jetbrains.kotlin.lexer.KtModifierKeywordToken HEADER_KEYWORD'

ktlint 플러그인 12.x 버전은 내부적으로 Ktlint 엔진 0.49.1 버전을 사용합니다.
하지만 해당 엔진 버전은 Kotlin 2.1과 호환되지 않기 때문에 정상적으로 작동하지 않습니다.
(kotlin 2.x 에서 HEADER_KEYWORD 필드를 삭제 함)

ktlint 플러그인 13.x 버전부터는 엔진 버전이 기본적으로 1.5.0 이상으로 적용되어 kotlin 2.1과 함께 사용할 수 있습니다.

만약 ktlint 플러그인 버전을 13.x로 올리고 싶지 않다면, build.gradle.kts 에 다음과 같이 엔진 버전을 명시적으로 설정해주는 방법도 사용할 수 있습니다:

configure<KtlintExtension> {
    version.set("1.5.0")
}

이렇게 설정하면 기존 플러그인 버전을 유지하면서도 Kotlin 2.1과의 호환 문제를 해결할 수 있습니다.

2. ktlintFormat 실행

Gradle sync 를 하고 나면 ktlintFormat task 가 생성됩니다.
해당 task 를 실행하면 자동으로 코드 스타일이 정리됩니다.

clean 후에 돌려야 정렬이 제대로 되는 경우도 있다고 함

3. 참고 문서

https://github.com/JLLeitschuh/ktlint-gradle?tab=readme-ov-file#minimal-supported-versions
https://github.com/pinterest/ktlint/releases

0개의 댓글