Java, Kotlin, Scala 등 JVM에서 실행되는 언어에서 자주 사용되는 빌드 자동화 도구
기존 Ant와 Maven의 단점을 보완하여 증분 빌즈, 빌드 캐시, 데몬 프로세스를 활용해 빌드 속도를 최적화하고,
멀티 프로젝트를 쉽게 관리할 수 있도록 설계
빌드 자동화 도구를 왜 사용하는가?
- 컴파일, 테스트, 패키징, 배포와 같은 반복 작업을 자동화 -> 개발 생산성을 높임
- 일관된 빌드 환경을 제공. 어떤 환경에서나 동일한 빌드 결과를 보장할 수 있다.
- 외부 라이브러리를 자동으로 관리하여 의존성 버전 충돌을 줄일 수 있다.
Maven / Gradle의 차이점
- 빌드 스크립트 작성 방식과 빌드 속도
| Maven | Gradle | |
| 빌드 스크립트 | XML | Groovy/Kotlin DSL |
| 빌드 속도 | 느림 | 빠름 |
| 의존성 관리 | 기본적인 의존성 관리 | 동적 버전 관리, 의존성 캐싱 최적화 |
| 확장성 | 한정적인 플러그인 기능 | 다양한 플러그인, 커스텀 태스크 |
| Android 지원 | 공식적 지원 X | 공식 빌드 도구 |
| 멀티 프로젝트 빌드 | 상속 방식, 설정 복잡 | 설정 주입방식, 관리 최적화 |
Dependency Configuration이란?
- 애플리케이션에 필요한 의존성의 사용 범위를 정의하는 설정
종류
1) implementation : 컴파일 및 런타임 시점에 모두 필요한 의존성. 일반적인 라이브러리나 프레임워크를 추가할 때 주로 사용
2) api : 다른 모듈에서도 접근할 수 있는 의존성을 정의
3) compileOnly : 컴파일 시점에만 필요한 의존성, Lombok
4) annotationProcessor : 컴파일 시점에 실행되는 어노테이션 프로세서를 추가할 때 사용
5) runtimeOnly : 런타임 시점에만 필요한 의존성, 데이터베이스 드라이버
6) testimplementation, testCompileOnly, testRuntimeOnly : 테스트 코드에서만 사용되는 의존성 추가
'cs(with 매일메일)' 카테고리의 다른 글
| [260226목] 스레드 풀 포화 정책이란 무엇인가요? (0) | 2026.02.26 |
|---|---|
| [260225수] ThreadLocal에 대해 설명해주세요. (0) | 2026.02.26 |
| [260223월] JPA Fetch Join과 페이징을 함께 사용할 때 주의점을 설명해 주세요. (0) | 2026.02.23 |
| [260220금] 서버리스란 무엇인가요? (0) | 2026.02.20 |
| [260219목] 널 오브젝트 패턴이란 무엇인가요? (0) | 2026.02.19 |