개요
최근 진행한 프로젝트에서 gradle 빌드 구성 파일들을 Groovy
에서 KTS
로 이전함으로써 Kotlin 문법으로의 통일감에서 장점을 느낄 수 있었습니다. Kotlin DSL
을 사용하였을 때의 장단점과 마이그레이션하는 방법에 대해 알아보도록 하겠습니다.
용어 정리
KTS와 Kotlin DSL이라는 용어를 찾아볼 수 있는데, 디벨로퍼에서 다음과 같이 이에 대한 용어 정리를 해두었습니다.
-
KTS: Gradle이 빌드 구성 파일에서 사용하는 Kotlin 언어 버전인 Kotlin 스크립트를 나타냅니다. Kotlin 스크립트는 명령줄에서 실행할 수 있는 Kotlin 코드입니다.
-
Kotlin DSL: Android Gradle 플러그인 Kotlin DSL을 나타내는 경우가 대부분이나 기본 Gradle Kotlin DSL을 나타내는 경우도 있습니다.
Groovy에서 이전하는 맥락에서 KTS
와 Kotlin DSL
이란 용어는 서로 바꿔 사용할 수 있습니다. 즉, Android 프로젝트를 Groovy에서 KTS로 변환하거나 Groovy에서 Kotlin DSL로 변환하는 것은 사실상 동일합니다.
마이그레이션 효과
Groovy
에서 kts
로 이전함으로써 얻을 수 있는 장단점들은 다음과 같은 것들이 있습니다.
Kotlin
언어로 통일함으로써gradle
파일의 가독성이 높습니다.- IDE 상에서 컴파일 시간 확인과 같은 여러 지원 기능들이 더욱 활성화되어 있습니다.
- 다만, KTS를 이용한 빌드는 Groovy를 사용하는 빌드보다 더 느린 경우가 있습니다.
정리해보자면, 개발자가 느끼는 개발 경험은 좋아지지만, 성능적인 면에서는 아직 이슈가 있는 모양입니다. 하지만 Kotlin
으로 통합이라는 점이 충분히 매력적이어서인지 최근의 구글 프로젝트들을 보면 전부 kts
를 사용하는 추세입니다.
마이그레이션 방법
1. 문자열을 큰따옴표로 통합
Kotlin에서는 문자열에 큰따옴표를 사용해야 합니다. 따라서 모든 문자열에 대한 작은따옴표들을 큰따옴표로 변환합니다.
From.
1 |
|
To.
1 |
|
2. 함수 호출 및 속성 할당
Groovy에서 수행하던 함수 호출과 속성 할당 문법을 괄호와 연산자를 통해 명확히 해주어야 합니다.
From.
1 |
|
To.
1 |
|
3. 파일 이름 변경
Groovy DSL 스크립트 파일은 .gradle
확장자를 사용하는 반면, Kotlin DSL의 경우 .gradle.kts
확장자를 사용합니다. 따라서 파일 확장자를 변경해주어야 합니다.
build.gradle
->build.gradle.kts
settings.gradle
->settings.gradle.kts
4. Plugin 블록 수정
2번과 동일한 맥락으로 수정합니다.
From.
1 |
|
To.
1 |
|
5. Boolean 속성에 대한 이름 수정
Kotlin DSL에서는 전부는 아니지만 일부 boolean
값을 갖는 속성에 대해서 이름에 is
접두사를 갖습니다.
From.
1 |
|
To.
1 |
|