
Gradle은 빌드 자동화 도구로, 주로 Java, Kotlin, Scala 등 JVM 기반 언어에서 사용된다.
우리가 작성한 소스 코드를 설정에 맞게 자동으로 빌드해 주는 역할을 한다.
여기서 빌드(Build)란,
우리가 작성한 소스 코드를 컴파일하고, 테스트를 수행한 뒤
실행 가능한 결과물(JAR, WAR 등)로 만드는 일련의 과정
Gradle을 사용하면 자바 프로젝트를 간단하게 실행 가능한 JAR 파일로 만들 수 있다.
빌드 자동화 도구를 사용하는 이유는 다음과 같다.
Gradle은 기존 Ant, Maven의 단점을 보완하여 설계되었다.
build.gradle은 Gradle 기반의 빌드 스크립트 파일이다.
이 파일을 통해 다음을 설정한다.
Gradle 스크립트는 Groovy 또는 Kotlin DSL로 작성할 수 있다.
라이브러리란,
특정 기능을 수행하는 코드들의 묶음이라고 생각하면 된다.
build.gradle의 dependencies 블록에 필요한 라이브러리를 작성하면
Gradle이 Maven Repository와 같은 외부 저장소에서
해당 라이브러리를 자동으로 다운로드한다.
Gradle은 라이브러리 간의 의존성 관계도 자동 관리해 주기 때문에
버전 충돌 걱정 없이 개발에 집중할 수 있다.
Maven과 Gradle의 가장 큰 차이점은 빌드 스크립트 방식과 빌드 속도이다.
| 구분 | Maven | Gradle |
|---|---|---|
| 빌드 스크립트 | XML (pom.xml) | Groovy / Kotlin DSL |
| 빌드 속도 | 느림 | 빠름 (증분 빌드, 캐시) |
| 의존성 관리 | 기본적인 관리 | 동적 관리, 의존성 캐싱 최적화 |
| 확장성 | 한정적인 플러그인 가능 | 다양한 플러그인, 커스텀 태스크 |
| Android 지원 | 공식 지원 X | Android 공식 빌드 도구 |
| 멀티 프로젝트 빌드 | 상속 기반, 설정 복잡 | 설정 주입 방식, 멀티 프로젝트 관리 최적화 |
Dependency Configuration은 의존성의 사용 범위(scope)를 정의하는 설정이다.
를 위해 사용된다.
👉 테스트 코드에서만 사용되는 의존성
아래는 Spring Boot 프로젝트에서 가장 기본적으로 사용하는 build.gradle 예제이다.
plugins {
id 'java'
id 'org.springframework.boot' version '4.0.2'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
// Spring Boot 기본 웹 스타터
implementation 'org.springframework.boot:spring-boot-starter-web'
// JPA (Hibernate 포함)
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// Lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// 테스트
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// DB 드라이버 (런타임 시점에만 필요)
runtimeOnly 'com.mysql:mysql-connector-j'
}
tasks.named('test') {
useJUnitPlatform()
}
Gradle은 단순한 빌드 도구를 넘어,
의존성 관리, 멀티 프로젝트 관리, CI/CD 연동까지 책임지는 핵심 도구이다.
Spring 프로젝트를 이해하기 위해서도
build.gradle과 Gradle의 동작 방식은 반드시 짚고 넘어가야 한다고 느꼈다.