Gradle vs Maven

sun·2025년 1월 27일
0

spring

목록 보기
1/2
post-thumbnail

Spring에서 Gradle과 Maven은 의존성 관리와 빌드 자동화를 위해 사용되는 도구.
빌드 도구로서 비슷한 목적을 가지고 있지만, 동작 방식과 특징에서 차이가 있음.

✒️ Build Script

Gradle

  • DSL(Domain Specific Language) 기반
  • Groovy 또는 Kotlin 스트립트 사용
  • 문법이 간결하고 선언적이며 읽기 쉬움
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter:3.0.0'
}

Maven

  • XML(Extensible Markup Language) 기반
  • pom.xml 파일에서 프로젝트의 의존성과 빌드 설정을 정의
  • 구조가 명확하고 계층적
  • XML 문법이 길어지고 복잡해질 수 있음
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>3.0.0</version>
  </dependency>
</dependencies>

✒️ 성능

Gradle

  • Incremental Build(증분 빌드)를 지원하여 변경된 부분만 빌드함으로써 속도 빠름
  • 병렬 빌드와 캐싱을 기본족으로 지원하여 대규모 프로젝트에 유리

Maven

  • 단순하지만 빌드 속도 느림
    • Incremental Build 지원 X, 항상 전체 프로젝트 다시 빌드
  • 병렬 지원 빌드 지원이 제한적 (특정 플러그인에서 지원)

✒️ 의존성 관리

Gradle

  • Maven Central, JCenter 등 다양한 저장소를 지원 (사용자 정의 저장소 추가 가능)
  • 의존성 관리 유연, 의존성 충돌 해결 자동화

Maven

  • 중앙 저장소(Maven Central Repository) 기반으로 의존성 관리
    • 물론 다양한 저장소를 지원하고 사용자 정의 저장소도 추가 가능
    • 하지만 기본 동작이 Maven Central Repository를 기본값으로 가져옴
    • 또한 maven 형식의 저장소만 지원
    • 그래서 Gradle보다 덜 유연함
  • 의존성 트리 확인 및 충돌 해결 기능 기본적으로 제공
  • 의존성 관리는 XML에서 선언적으로 처리

✒️ 가독성과 유지보수성

Gradle

  • DSL 방식으로 간결하고 가독성 좋음
  • 스크립트 기반이라 조건문, 반복문 등을 활용해 설정을 동작으로 구성 가능

Maven

  • XML 기반이라 구조화된 문서를 유지하기 쉬움
  • 규모가 커지면 복잡성 증가 및 반복적인 태그 작성 증가
profile
Please, Steadily

0개의 댓글

관련 채용 정보