Google Developers의 가이드에 이렇게 설명되어 있다.


위의 빌드 프로세스 단계를 따르면서 좀 더 유연하게 외부 바이너리 또는 다른 라이브러리 모듈을 빌드에 종속 항목으로 쉽게 포함할 수 있는 빌드 배포 도구 정도로 설명을 할 수 있을거 같다.
Android의 Gradle 스크립트 언어는 Groovy를 사용하고 있는데, 지금 부터 얘기할 내용은 Groovy -> KTS로 마이그레이션을 하면서 겪은 시행착오 및 장단점을 얘기하려 한다.
Groovy란 JVM위에서 동작하는 동적 타입 프로그래밍 언어이다. Java뿐만이 아니라 Python, Ruby등에 많은 영향을 받은 프로그래밍 언어로 문법이 간결하다. 하지만, 사실상 대부분은 Gradle Script를 작성하기 위해 사용되고 있으며, Gradle Kotlin이 등장하고 나서는 많이 전환하는 추세이다. Java 생태계의 대부분인 Android나 Spring이 Kotlin으로 작성 가능한데, Build Script작성을 위해 별도의 언어를 사용한다는점이 통일성도 없을뿐더러, 별도의 프로젝트를 구성하지 않으면 자동완성이 안된다는 문제도 가지고 있다.
일단 Kotlin 프로젝트에서 Kotlin 언어로 통일된다는 점이 굉장히 가독성 측면에서 이점인거 같다.
반대로 KTS로 전환시 단점도 존재하는데, Groovy에 비해 빌드 시간이 조금 증가하게 된다.
IDE에서 buildSrc를 체크 후 빌드를 진행하게 되는데, 이러한 과정이 기존 gradle파일만 사용해서 빌드를 진행하는 과정보다 한단계 더 늘어나기에 그런듯 하다.
현재 구글에서도 적극적으로 KTS로 빌드 구성을 마이그레이션하기를 권장하고 있다.
가이드 : https://developer.android.com/studio/build/migrate-to-kts?hl=ko


위의 스크린샷은 KTS로 마이그레이션 하면서 종속 항목을 하나의 오브젝트로 관리할 수 있게 변경한 부분이다.
buildSrc폴더를 Root경로에 생성하고, build.gradle.kts에 이제부터 DSL을 사용하겠다고 선언을 하고 프로젝트 빌드를 진행하면 초기 설정은 끝이다.
그 후 기존의 build.gradle 파일을 kts파일로 변환하면 된다.

KTS파일에서 DSL로 스크립트를 작성하는데, 가장 눈에띄게 달라진 점은 큰따옴표를 사용해야 하는 점이었다.

이전 Groovy 스크립트에서는 사용 방식에 따라 작은따옴표와 큰따옴표 둘다 사용이 가능했지만,
KTS DSL에서는 문법을 통일하도록 제한되어 있다.
또한 이전에 자동완성이 안되던 부분이 색깔이 칠해지면서 자동완성을 지원한다고 눈으로 확인할 수 있다.
의존성 항목도 이전과는 다른 점을 확인할 수 있다.


여기까지 마이그레이션을 진행하게 된다면 기본적인 설정은 끝나게 된다.
Groovy 스크립트를 사용할때엔 sync gradle 버튼 (코끼리)를 눌러서 의존성 버전이나 오류를 체크해야 했다면, 이제는 IDE 수준에서 바로 문법의 오류를 체크할 수 있게 된다.
아직 스터디 초기단계라 DSL에 대한 공부가 부족하다.
DSL의 강력한 이점 중 하나인 Custom Plugin에 대해서도 공부를 해봐야 할거 같다.
또한 구글의 가이드를 보면, Kotlin DSL로 애플리케이션 코드나 XML에도 관여하여 코드 프로세스를 간결화 시킬수 있다고 나와있는데, 이 부분은 굳이 따로 공부할 필요는 없어보이며 이런게 있다 정도만 알아두면 좋을듯 하다. (https://developer.android.com/guide/navigation/navigation-kotlin-dsl?hl=ko)