반응형
- 오픈 소스 빌드 도구
- DSL(Domain Specific Language) 기반 빌드 스크립트 사용: Groovy 또는 Kotlin
- 의존성 관리, 멀티 프로젝트 지원, 캐싱, 병렬 처리 등 고급 기능 제공
- Android Studio의 공식 빌드 시스템
🔁 다른 빌드 도구와의 비교
특징 | bazel | Gradle | Maven | Ant |
출시 시기 | 2015 | 2012 | 2004 | 2000 |
스크립트 언어 | Starlark (Python 유사) | Groovy / Kotlin DSL | XML | XML |
특징 | Google 개발. 대규모 프로젝트에 최적화 | 빠르고 유연함. Android 공식 빌드 도구 | Ant보다 구조화됨. 의존성 관리 도입 | 최초의 자바 빌드 도구. 절차적(명령형) 방식 |
의존성 관리 | 별도 WORKSPACE 설정 필요 | 지원 (Maven repository 사용) | 지원 | 부분적 (외부 도구 필요) |
생산성 | (정적 분석 기반 캐시), 뛰어난 병렬 빌드, 고급 원격 캐시 지원, 매우 빠른 속도 |
캐싱, 병렬 빌드로 빠름 | 느림 (모든 작업 재실행) | 사용자가 다 수동으로 정의해야 함 |
구성 방식 | 선언형, 정형화된 규칙, 코드 재사용성 높음(규칙과 매크로) |
선언적 + 명령형 코드 재사용성 높음(스크립트 로직) |
선언적 | 명령형 |
플러그인 시스템 | 제한적 (JetBrains IDE 플러그인 필요) | 매우 유연함 | 제한적 | 제한적 |
사용 예 | Google 내부, TensorFlow, 대규모 모노레포 | Android, Java, Kotlin, Spring Boot | Java, Spring Boot | 구버전 Java 프로젝트, 빌드 자동화 |
요약 | 빠르고 강력하나 진입 장벽이 높음 | 현대적이고 유연하며 성능도 우수. JVM 기반 프로젝트에 거의 최적. | 표준화된 구조, 배우기 쉬움. 단, 유연성이 떨어짐. | 너무 구식, 거의 사용되지 않음. 학습 용도로는 괜찮지만 실전에서는 비추천. |
💡 Gradle의 장점
- 속도: 증분 빌드, 데몬 프로세스, 병렬 빌드 등으로 빠름
- 확장성: 플러그인을 쉽게 추가 가능 (application, java, android 등)
- 유연한 빌드 스크립트: Groovy 또는 Kotlin을 활용하여 복잡한 로직도 작성 가능
- IDE 통합성: IntelliJ, Android Studio 등과 완벽한 통합
📂 예시 (Gradle build.gradle 파일 - Groovy)
plugins {
id 'java'
}
group = 'com.example'
version = '1.0'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'junit:junit:4.13.2'
}
🤔 언제 Gradle을 선택해야 할까?
- Android 개발을 한다면 무조건 Gradle
- 복잡한 멀티 모듈 프로젝트가 있다면 Gradle이 더 유리
- 유연한 빌드 로직이 필요할 때 Gradle 추천
- 단순하고 정적인 빌드 구조를 원한다면 Maven도 괜찮음
반응형