안녕하세요 오늘은 Spring initializr로 스프링 부트 프로젝트를 생성할 때 선택하는 Maven과 Gradle의 차이를 알아보려고 합니다.
자 먼저 Maven과 Gradle의 차이를 알아보기 전에 우리는 빌드 관리 도구란 것이 무엇인지 알아볼 필요가 있습니다.
빌드 관리 도구란?
빌드 관리 도구란 프로젝트에서 필요한 파일들(xml. properties, jar)을 자동으로 인식하여 빌드해주는 도구입니다.
소스 코드를 컴파일, 테스트 ,정적분석을 통하여 실행가능한 어플리케이션으로 빌드해주죠
그리고 외부 라이브러리를 참조하여 자동으로 다운로드 및 업데이트의 관리해줍니다.
지금에서야 몇줄 추가하는 걸로 라이브러리를 자동으로 다운로드 해주지만 옛날에는 직접 라이브러리를 다운받아 수동으로 추가해줘야 했다고 합니다.. 지금 생각하면 정말 노가다죠
자 그러면 빌드 관리 도구가 무엇인지 알았으니 자바의 대표적인 빌드 도구 3가지를 알아보겠습니다!
위 사진처럼 자바의 대표적인 빌드 도구는 Ant -> Maven -> Gradle로 가고 있는 추세입니다.
오늘 글에서는 최근 사용해왔고 사용하고 있는 Maven과 Gradle만 다루고자 합니다
먼저 메이븐(Maven)이란?
자바의 대표 관리 도구였던 Ant를 대체하기 위해 개발되었습니다.
외부 라이브러리를 쉽게 참조할 수 있게 pom.xml 파일로 명시하여 관리하고 참조한 외부 라이브러리에 연결된 다른 라이브러리도 자동으로 관리됩니다.
이런식으로 말이죠! 위 태그들에 대한 정리가 잘된 사이트가 있어서 참고용으로 올립니다
https://wookim789.tistory.com/26
자 다음으로는 그래들(Gradle)이란?
Groovy 스크립트를 활용한 빌드 관리 도구라고 할 수 있습니다.
음 근데 Groovy란 무엇일까요?
Groovy란 JVM위에서 동작하는 동적 타입 프로그래밍언어입니다, 문법이 간결해서 Java뿐만 아니라 Python, Ruby등 많은 언어에서 영향을 받았죠 하지만 사실살 대부분 Gradle Script를 작성하기 위해 사용되고 있으며, Gradle Kotlin이 등장하고 나서는 Gradle Kotlin으로 많이 전환하는 추세입니다.
Gradle특징과 Maven과 차이
그래들은 현재 안드로이드 프로젝트의 표준 빌드 시스템으로 채택되어 있고 멀티 프로젝트의 빌드에 최적화 하여 설계되어있습니다
또한 Maven에 비해 더 빠른 처리속도를 가지고 있습니다 최대 100배 정도 된다고 하네요 그리고 Maven에 비해 더 간결한 구성이 가능합니다.
하지만 아직 Maven의 점유율이 더 높은 상황입니다 예전에는 Maven을 써왔기 때문이죠 하지만 점점 Gradle 점유율이 오르는 중이라
향후에는 Gradle을 더 자주쓰지 않을까 생각합니다 훨씬 더 빠르며 대규모 프로젝트에서 성능이 뛰어나기 때문이죠.
간단한 Gradle 코드 입니다 간략하게 설명하자면
repositories : 라이브러리가 저장된 위치 등 설정
mavenCentral : 기본 Maven Repository를 사용한다는 뜻입니다.
dependencies : 라이브러리 사용을 위한 의존성 설정입니다. 어떠한 라이브러리를 쓰겠다고 선언해주는 거죠
자 오늘은 Gradle과 Maven을 통해 빌드 관리 도구와 차이점을 알아 보았는데요
혹시 궁금한점이나 틀린점이 있다면 댓글부탁드립니다 ! !
참고한 레퍼런스
'스프링' 카테고리의 다른 글
[Spring] TDD vs BDD 무엇인지알고 비교하기 (0) | 2023.03.12 |
---|---|
[Spring] Slice를 이용하여 무한스크롤 구현하기 (0) | 2023.02.12 |
[Spring] Spring Security이용한 JWT 로그인 구현기 (1) | 2023.01.28 |
[Spring] JWT Refresh Token 어디에 저장해야 할까? 그리고 꼭 저장해야 할까? (0) | 2023.01.25 |
[Spring] Spring이란 무엇인가? (0) | 2023.01.03 |