Maven과 Gradle은 빌드 도구로, 프로젝트의 빌드, 테스트, 배포 등의 작업을 자동화하는 역할을 하지만, 두 도구는 동작 방식과 설정 방법, 성능 측면에서 차이가 있다.
Maven
- 설정방식
- XML기반 설정 파일인 pom.xml을 사용
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
- 빌드속도
- XML 설정 파일 기반으로 빌드를 수행하며, 빌드 시 매번 모든 작업을 다시 수행하는 경향이 있다.
- 빌드 속도 : 상대적으로 느릴 수 있다.
- 병렬 빌드 : Maven 3.0 이후부터 병렬 빌드를 지원하지만, 성능 최적화는 Gradle에 비해 제한적이다.
- 의존성 관리
- 중앙 저장소(Maven Central)를 기본으로 사용하며, 각 의존성은 groupId, artifactId, version으로 관리된다.
- 의존성 충돌 발생 시 의존성 트리 분석을 통해 해결해야 하며, 종속성 관리가 좀 더 명시적이다.
Gradle
- 설정방식
- Groovy 또는 Kotlin DSL을 사용하여 build.gradle 또는 build.gradle.kts 파일로 설정
- 빌드속도
- Gradle은 태스크 기반 빌드 시스템으로, 필요에 따라 작업을 건너뛰거나 다시 빌드하지 않는 증분 빌드를 지원한다.
- 빌드 속도 : 초기 빌드는 시간이 오래 걸릴 수 있지만, 이후 캐싱, 증분 빌드, 병렬 빌드 기능을 통해 Maven보다 훨씬 빠른 빌드를 수행할 수 있다.
- 성능 최적화 : Gradle은 작업 결과를 캐시하고 재사용함으로써 반복 빌드를 빠르게 한다.
- 의존성 관리
- Maven과 동일하게 의존성을 관리하지만, Transitive Dependency 관리가 더 유연하고 편리하다.
- 의존성 충돌 해결 : Gradle은 자동으로 최신 버전을 선택하여 의존성 충돌을 완화하는 기능을 가지고 있다. 이를 최소 상위 버전 선택 전략(Conflict Resolution)을 통해 관리한다.
- 추가적으로 의존성 구성(configurations)을 통해 더 세밀한 의존성 관리를 할 수 있다.
'Develop > Spring' 카테고리의 다른 글
[Springboot] Gmail SMTP 서버 연결하기 (1) | 2025.03.07 |
---|---|
[Spring]대용량 데이터 엑셀 다운로드 구현하기 (1) | 2024.10.30 |
[Spring]Filter와 Interceptor의 개념 및 차이 (0) | 2024.10.17 |
[Spring] Validator의 주요개념과 적용 방법 (0) | 2024.10.02 |
@RequestBody와 @ModelAttribute (0) | 2024.08.01 |