본문 바로가기

cs(with 매일메일)

[260224화] Gradle에 대해 설명해주세요.

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 : 테스트 코드에서만 사용되는 의존성 추가