Gradle과 Manven은 빌드, 프로젝트 구성/관리, 테스트, 배포 도구로 최근에는 Gradle을 많이 사용한다고 함.
Gradle이 Maven보다 좋은점
- Build라는 동적인 요소를 XML로 정의하기에는 어려운 부분이 많다.
- 설정 내용이 길어지고 가독성 떨어짐
- 의존관계가 복잡한 프로젝트 설정하기에 부적절
- 상속구조를 이용한 멀티 모듈 구현
- 특정 설정을 소수의 모듈에서 공유하기 위해서는 부모 프로젝트를 생성하여 상속하게 해야 함 (상속의 단점 생김)
- Gradle은 Groovy를 사용하기 때문에, 동적인 빌드는 Groovy 스크립트로 플러그인을 호출하거나 직접 코드를 작성하면 된다.
- Configuration Injection(설정 주입) 방식을 사용해서 공통 모듈을 상속해서 사용하는 단점을 커버했다.
- 설정 주입 시 프로젝트의 조건을 체크할 수 있어서 프로젝트별로 주입되는 설정을 다르게 할 수 있다.
- Gradle은 concurrent에 안전한 캐시를 허용한다.
- 2개 이상의 프로젝트에서 동일한 캐시를 사용할 경우, 서로 overwrite되지 않도록 checksum 기반의 캐시를 사용하고, 캐시를 repository와 동기화시킬 수 있다.
Gradle vs Maven: 성능 비교
- 600명의 엔지니어가 1년동안 1분걸리는 빌드를 매주 42번 빌드를 진행할 때 들어가는 비용은
600명의 엔지니어 * 1.42달러/분 * 42개의 빌드/주 * 44주/연간 = 1,600,000달러/연간
이때 빌드 속도가 90% 빨라진다면? - Gradle은 메이븐 보다 최대 100배 빠르다.
Gradle이 Maven보다 빌드속도가 빠른 이유
- Gradle은 작업 의존성 그래프를 기반으로하는 반면 Maven은 고정적이고 선형적인 단계의 모델을 기반으로 한다.
- 성능 측면에서는 둘 다 다중 모듈 빌드를 병렬로 실행할 수 있지만, Gradle은 어떤 task가 업데이트되었고 안되었는지를 체크하기 때문에 incremental build를 허용한다. 이미 업데이트된 테스크에 대해서는 작업이 실행되지 않으므로 빌드 시간이 훨씬 단축된다.
* 참고자료
'Spring' 카테고리의 다른 글
Gradle 라이브러리 의존성 설정 (0) | 2022.05.24 |
---|---|
Spring Boot 자동 환경설정 Annotation (0) | 2022.05.11 |