백엔드/스프링, 스프링부트, JPA, Spring Webflux
Build Tool : Maven과 Gradle의 개념과 차이점
Kangjieun11
2023. 7. 17. 17:37
728x90
✅ 개요
스프링/스프링부트 프로젝트를 하다보면 Maven과 Gradle을 선택하는것부터 나온다.
초보자 시절엔 그냥 다른 블로그 따라서 Gradle을 선택했었는데...
좀더 세세하게 알아보자.
✅ Build Tool
Maven, Gradle은 모두 빌드 관리도구이다.
우리는 프로젝트에 여러가지 외부 라이브러리를 사용하게 된다
이때 빌드 관리 도구 (Build Tool) 를 사용하여, 필요한 라이브러리를 자동으로 관리받을 수 있다.
⏺ Build Tool 작업 과정
1) 종속성 다운
2) 소스코드를 바이너리코드로 컴파일
3) 패키징
4) 테스트
5) 프로덕션 시스템에 배포
✅ Maven
메이븐은 자바 전용 프로젝트 관리 도구이다.
Ant의 대안으로 만들어졌고,
아파치 라이센스로 배포되는 오픈소스 소프트웨어이다.
⏺ pom.xml
- Project Object Model의 약자
- 메이븐의 핵심 파일이다.
- 라이브러리를 다운받기 위한 설정을 이 파일에 진행한다.
- XML 태그로 설정을 기술한다.
✅ Gradle
- Gradle은 Maven을 대체하는 빌드 툴이다.
- Ant Builder와 Groovy script를 기반으로 구축되어 기존의 Ant의 역할 및 배포 스크립트의 기능을 모두 사용가능하다.
- 스프링부트와 안드로이드에서 사용된다.
- 빌드 속도가 Maven보다 빠르다.
https://www.holaxprogramming.com/2017/07/04/devops-gradle-is-faster-than-maven/
- Java, Python, C/C++을 지원한다.
⏺ Gradle 특징
- 코드로 간결하게 정의하기 때문에 가독성이 좋다
- Build Script를 Groovy 기반의 DSL(Domain Specific Language)를 사용 -> 구조적으로 장점이 있다..
- Gradle 설치 없이 Gralde Wrapper를 이용해 빌드를 지원한다
- Multi Project 빌드를 지원한다.
- Maven을 완전히 지원한다.
✅ Maven과 Gradle 비교
- 스크립트 길이 + 가독성은 Gradle이 우세하다.
- Maven보다 Gradle이 더 빠르다
- 의존성이 늘어나면 스크립트 품질 차이가 크다.
Maven의 경우 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하기 위해 상속을 받아야 하지만
Gradle은 설정 주입 방식을 사용해서 멀티프로젝트에 적합하다
결국 우리가 스프링부트에서 Gradle을 선택해서 사용하는 이유는..
1) 스프링부트는 간단하게 설정을 할 수 있다는 장점을 살리기 위해 사용함 -> Maven을 통해 XML으로 설정해줄 이유가 없음 -> 새로운 의문 : Maven은 무조건 스프링에만 매칭되는것인가?
2) Gradle이 더 빠르고 확장에 유연하다
References
- https://www.holaxprogramming.com/2017/07/04/devops-gradle-is-faster-than-maven/
- https://velog.io/@leesomyoung/Maven%EA%B3%BC-Gradle%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EB%B0%8F-%EB%B9%84%EA%B5%90
- https://u-it.tistory.com/entry/Maven%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1-%EB%B0%8F-pomxml-%EC%A0%95%EB%A6%AC-%EB%B0%8F-%EC%84%A4%EC%A0%95-Maven%EC%9D%98-%EA%B0%9C%EB%85%90-Maven-RepositoryMaven%ED%8F%B4%EB%8D%94%EA%B5%AC%EC%A1%B0