Gradle
✒️ 2025-06-28 19:45 내용 수정
참고 자료 : Geeksforgeeks Difference between Gradle and Maven, Java Code Geeks Maven and Gradle: A Side-by-Side Comparison
Gradle
Groovy 또는 Kotlin DSL을 사용하는 빌드 자동화 도구
-
Maven과 같이 구조화된 build framework로, build Script를 DSL(Domain Specific Language)를 사용하여 관리한다.
-
Task 기반 빌드를 사용하기에 복잡한 빌드 로직을 구현할 수 있다.
- Build 생명주기는 Maven과 달리 고정된 생명 주기가 없어 유연성이 높다.
-
장점
- Groovy 기반 DSL로 인해 유연성이 높다.
- 빌드 속도가 빠르다.
- 다양한 커스텀 속성을 지원한다.
-
단점
- 초보자가 Groovy 기반 문법을 배우는 데 어려울 수 있다.
- 표준화된 빌드 설정이 없기에 설정과 빌드 스크립트에 대한 이해가 필요하다.
파일 및 구조
| 파일 | 설명 |
|---|---|
| build.gradle | 프로젝트 빌드에 대한 모든 기능을 정의함 |
| gradlew, gradlew.bat | gradle 명령파일 |
| setting.gradle | 빌드할 프로젝트의 정보를 설정 |
build.gradle: 프로젝트 빌드에 대한 모든 기능을 정의한다.- plugin 설정이 있으며, 특정 빌드 과정에 필요한 기본 정보를 포함하고 정보를 수정할 수 있다.
- 저장소(repositories) 설정에는 Maven, JCenter, Ivy 등의 저장소를 지원한다.
- dependencies에는 의존 관계를 설정한다.
| 옵션 | 설명 |
|---|---|
| implementation | 프로젝트 컴파일 과정에서 필요한 라이브러리를 설정 |
| compileOnly | 컴파일때만 빌드하고 빌드 결과물엔 포함 되지 않는 라이브러리를 설정 |
| developmentOnly | 개발때만 필요한 라이브러리를 설정 |
| annotationProcessor | lombok과 같은 Annotation processor를 설정 |
| testImplementation | 테스트 코드를 수행할 때만 적용되는 라이브러리를 설정 |
| providedCompile | 컴파일 시엔 필요하지만 배포엔 제외되는 라이브러리를 설정 |
| providedRuntime | 런타임 시에만 필요하고 실행환경에서 제공되는 라이브러리를 설정 |