Gradle
IT위키
더 많은 작업
Gradle(그레이들)은 Groovy 나 Kotlin 으로 빌드 스크립트를 쓰는 오픈 소스 빌드 자동화 도구로, 실행할 처리 명령들을 태스크로 만들어 태스크 단위로 실행한다.
Gradle 은 2012년 1.0 판이 나왔다. 앞선 자바 빌드 도구인 Ant 의 유연함과 Maven 의 의존성 관리·관례를 함께 가져오면서, 빌드 스크립트를 XML 대신 프로그래밍 언어 문법(DSL)으로 쓰게 했다. 빌드 스크립트는 build.gradle(Groovy DSL) 또는 build.gradle.kts(Kotlin DSL)이다.
구글은 2013년 안드로이드 스튜디오를 내놓으면서 Gradle 을 안드로이드 앱의 공식 빌드 도구로 삼았다. 지금도 안드로이드 프로젝트는 Android Gradle Plugin 으로 빌드한다. 자바·코틀린 서버 프로젝트(스프링 부트 등)에서도 Maven 과 함께 가장 많이 쓰인다.
- 태스크(Task) : 컴파일, 테스트, JAR 만들기처럼 빌드에서 하는 일 하나하나가 태스크이다. 태스크 사이의 의존 관계를 따라 필요한 태스크만 차례로 실행한다
- 증분 빌드 : 입력과 출력이 바뀌지 않은 태스크는 다시 실행하지 않는다(UP-TO-DATE)
- 빌드 캐시 : 이전에 만든 태스크 결과를 다시 쓴다. 원격 캐시로 팀이 결과를 나눠 쓸 수도 있다
- 데몬 : 빌드 프로세스를 띄워 두고 재사용해 시작 시간을 줄인다
- 의존성 관리 : Maven 중앙 저장소 등 Maven·Ivy 형식 저장소를 그대로 쓴다
- Gradle Wrapper : 프로젝트에 넣어 둔 gradlew 스크립트로, 개발자 PC 에 Gradle 을 따로 설치하지 않아도 정해진 판으로 빌드한다
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation 'junit:junit:4.13.2'
}
$ ./gradlew build # compileJava → test → jar 등 build 에 딸린 태스크를 실행 $ ./gradlew tasks # 실행할 수 있는 태스크 목록
| 도구 | 스크립트 | 성격 |
|---|---|---|
| Ant | build.xml | 태스크를 XML 로 일일이 적는다. 의존성 관리가 없다 |
| Maven | pom.xml | 정해진 생명주기와 디렉터리 관례, 의존성 관리 |
| Gradle | build.gradle(.kts) | Groovy·Kotlin DSL, 태스크 그래프, 증분 빌드·캐시. 안드로이드 공식 빌드 도구 |
| 젠킨스 | Jenkinsfile | 빌드 도구가 아니라 자바로 만든 CI 서버. Gradle·Maven 을 불러 빌드를 자동으로 돌린다 |