Spring
[Spring] Maven/Gradle이란?
코린이 파닥거리기
2025. 1. 30. 17:29
728x90
반응형
SMALL
자바 프로젝트를 만들면 빌드관리도구 Maven 또는 Gradle을 선택하라고 한다.
intelliJ
- 별도의 빌드관리도구 없이 인텔리제이 자체 기능으로 빌드를 관리하는 시스템
- 간단한 프로젝트에 괜찮지만 의존성 관리가 불편하다.
maven
- xml기반의 관리도구(pom.xml), 스프링부트나 스프링 프레임워크에서 많이 사용된다.
- 라이브러리 및 의존성 관리가 편리함.
gradle
- Groovy/Kotlin DSL( domain-specific-language)를 사용하여 메이븐보다 코드가 훨씬 간결하다.
- 큰 규모의 멀티프로젝트 빌드를 도울 수 있도록 디자인되었다.
- 그레이들은 프로젝트의 어느부분이 업데이트되었는지 알 수 있기 때문에 점진적 추가가 가능하다.
Maven vs Gradle?
그래서 뭘 써야할지 고민된다면 두 시스템이 빌드에 접근하는 방식에는 몇 가지 근본적인 차이점이 있다.
Gradle은 작업 의존성 그래프를 기반으로하는 반면 Maven은 고정적이고 선형적인 단계의 모델을 기반으로한다고 한다.
성능 측면에서는 둘 다 다중 모듈 빌드를 병렬로 실행할 수 있지만, Gradle은 어떤 task가 업데이트되었고 안되었는지를 체크하기 때문에 incremental build를 허용한다. 이미 업데이트된 테스크에 대해서는 작업이 실행되지 않으므로 빌드 시간이 훨씬 단축된다.
=====> 빌드 설정 규모가 점점 커지면 커질수록, 빌드시간의 차이도 Maven과 비교하여 꽤 격차가 벌어질 수 있을것같다.
-maven 의 경우 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속을 받아야 하지만 gradle 은 설정 주입 방식을 제공한다.
- 또한 Gradle은 concurrent에 안전한 캐시를 허용한다.
=====> 2개 이상의 프로젝트에서 동일한 캐시를 사용할 경우, 서로 overwrite되지 않도록
checksum( 중복 검사의 한 형태로, 오류 정정을 통해, 데이터의 무결성을 보호 )기반의 캐시를 사용하고,
캐시를 repository와 동기화시킬 수 있다.
- 고도로 사용자 정의된 빌드를 작성하기 위해서는 커스터마이징이 간편한 Gradle을 사용하는게 훨씬 낫다.
728x90
반응형
LIST