Gradle을 처음 쓸때는 Groovy 기반으로 Gradle DSL을 작성했었다.
지금은, 몇 가지 불편사항 때문에 Kotlin 기반 Gradle DSL을 사용하고 있다.
1. 느슨한 문법 체크
Groovy는 아래 3가지 경우를 모두 동일하게 인식한다.
// Groovy
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web:3.5.0' // 1번
implementation "org.springframework.boot:spring-boot-starter-test:3.5.0" // 2번
implementation('org.springframework.boot:spring-boot-starter-web:3.5.0') // 3번
}
하지만, Kotlin은 아래와 같이 써야한다.
// Kotlin
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web:3.5.0")
}
굉장히 사소해 보일수 있지만, 통일된 양식을 보는것이 꽤나 생산성을 높여준다.
2. 런타임 체크
Groovy기반 Gradle DSL은 에러가 런타임(빌드 시점)에 발견된다. 그래서 오탈자 체크나, 자동완성 기능에 있어서 IDE의 지원을 받기 힘들다.
반면, Kotlin기반 Gradle DSL은 코드 작성 시점에 오탈자 체크, 자동완성 기능에서 IDE의 지원을 받을 수 있다.

아래와 같은 다소 복잡한(?) 설정을 적용할때도 마찬가지다.
// Groovy
task copyResources(type: Copy) {
from 'src/main/resources'
into "$buildDir/custom"
include '**/*.yml'
doLast {
println 'Copied all yml files!'
}
}
// Kotlin
tasks.register<Copy>("copyResources") {
from("src/main/resources")
into("$buildDir/custom")
include("**/*.yml")
doLast {
println("Copied all yml files!")
}
}
코드 자체는 비슷해 보일지 몰라도, Kotlin기반 DSL은 register<Copy> 처럼 타입을 지정해주는것도 가능하고, from, into, include 안에서 어떤 타입을 받는지도 체크 할 수 있고, 오탈자 체크도 가능하다.
결론, Kotlin기반 Gradle DSL 추천한다...
'Gradle' 카테고리의 다른 글
| [Gradle] 설정 파일 구조 완전 정복! (4) | 2025.07.15 |
|---|---|
| [Gradle] Phase (1) | 2025.07.10 |
| [Gradle] Gradle Task, 왜 이렇게 많고 헷갈리는 거야? (1) | 2025.07.09 |
| [Gradle] 프로젝트가 어떻게 생겼을까? (2) | 2025.06.09 |
| [Gradle] 멀고도 가까운.. (4) | 2025.06.04 |