그루비(Groovy)를 기반으로 한 빌드 도구 Ant와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 빌드 도구
실행시켜야 하는 task만 실행시키고 다른 불필요한 동작은 하지 않고, build cache 를 사용함으로써 이전 실행의 task outpupt을 재사용. 서로 다른 기계에서도 build cache를 공유하여 성능 향상
JVM 에서 실행되기 때문에 JDK 설치 필요. Java Standard API 를 빌드 로직에 사용 사능, 다양한 플랫폼에서 실행
컨벤션 을 따라 Java 프로젝트와 같은 일반적인 유형의 프로젝트를 쉽게 빌드 가능. 필요하다면 컨벤션을 오버라이딩 하거나 task를 추가하면서 컨벤션 기반의 빌드를 커스터마이징
Gradle을 확장하면 고유의 task 타입을 제공하거나 모델 빌드 가능
Android Studio, IntelliJ IDEA, Eclipse 등의 IDE에서 Gradle을 임포트하여 사용 가능
빌드를 모니터링할 수 있는 Build Scan 지원
├─ gradle
│ └─ wrapper
│ ├─ gradle-wrapper.jar
│ └─ gradle-wrapper.properties
├─ gradlew
├─ gradlew.bat
├─ build.gradle
└─ settings.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-aop'
}
tasks.named('test') {
useJUnitPlatform()
}
build.gradle 에 작성한느 코드들은 모두 Project 오브젝트의 프로퍼티와 메서드가 되며, Project 오브젝트는 프로젝트 이름부터 변수, 메서드를 모두 포함하는 객체가 됨
이 메서드들은 build.gradle 속에 메서드로 존재 → 이 내부에 들어가는 람다식은 프로젝트가 빌드될 때 해당 메서드를 수행하는 task에 의해 수행
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-aop'
}