Gradle는 안드로이드 앱부터 Spring Boot 애플리케이션까지 다양한 프로젝트의 빌드 및 배포 자동화 도구로 널리 사용되고 있습니다. 특히, Kotlin DSL(build.gradle.kts
)을 사용하면 더욱 표현력 있고 타입 안전한 빌드 스크립트를 작성할 수 있습니다.
본문에서는 tasks
블록과 tasks.register()
함수에 대해 깊게 다룰 것입니다.
1. tasks 블록이란?
tasks
는 Gradle 빌드 스크립트에서 사용할 수 있는 빌드 작업들을 정의하는 곳입니다. 각 작업은 프로젝트 빌드의 특정 단계나 기능을 나타냅니다. 예를 들면, 프로젝트를 컴파일하거나 테스트를 실행하거나 애플리케이션을 실행하는 것과 같은 작업을 정의할 수 있습니다.
2. tasks.register() 함수
tasks.register(taskName: String)
함수는 새로운 작업을 등록하는데 사용됩니다. 여기서 taskName
은 등록하려는 작업의 이름입니다.
tasks.register("customTask") {
// 작업에 대한 로직
}
이 함수의 주요 장점은 작업을 "지연 등록(lazy registration)"한다는 것입니다. 즉, 작업이 실제로 필요할 때까지는 초기화되지 않습니다. 이로 인해 빌드 성능이 향상될 수 있습니다.
3. 가상 시나리오 및 예제 코드
시나리오: Spring Boot 애플리케이션을 개발 중이며, 로컬 환경에서 DB 마이그레이션을 테스트하고 싶습니다. Flyway라는 도구를 사용하여 DB 마이그레이션을 관리하고 있습니다.
// build.gradle.kts
// 필요한 플러그인 및 의존성 설정
plugins {
kotlin("jvm") version "1.5.20"
id("org.springframework.boot") version "2.5.2"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
}
dependencies {
implementation("org.flywaydb:flyway-core:7.8.1")
// ... 기타 의존성들
}
// customTask를 사용하여 Flyway 마이그레이션을 실행하는 작업을 정의
tasks.register("migrateLocalDb") {
group = "database" // 작업 그룹 지정
description = "Migrate local database using Flyway" // 작업에 대한 설명
doLast {
// 여기에 마이그레이션 로직 작성
println("Migrating local database...")
}
}
// 다른 작업들을 정의할 수 있습니다. 예: tests, compileKotlin 등
이 코드에서 migrateLocalDb
라는 새로운 작업을 정의했습니다. ./gradlew migrateLocalDb
를 실행하면 로컬 DB에 대한 마이그레이션을 테스트할 수 있습니다.
결론
Gradle은 프로젝트의 빌드 및 배포를 위한 강력한 도구입니다. tasks
블록과 tasks.register()
함수를 사용하여 필요한 빌드 작업을 쉽게 추가하고 관리할 수 있습니다. Kotlin DSL을 사용하면 더욱 표현력 있고 읽기 쉬운 빌드 스크립트를 작성할 수 있습니다.
'Language > Kotlin' 카테고리의 다른 글
그래들 설정 settings.gradle.kts에 대해 (0) | 2023.09.13 |
---|---|
DSL (Domain-Specific Language)이란? | feat. Kotlin DSL, build.gradle.kts 예시 코드) (0) | 2023.09.13 |
`reified`란? (0) | 2023.09.04 |
Inline 함수란? (0) | 2023.09.04 |
코틀린의 `joinToString()`: 모든 것을 알아보자 (0) | 2023.08.31 |