스프링 프로젝트를 시작하려면 빌드 도구 Gradle과 Maven을 선택해야한다. 빌드 도구?
빌드 도구
빌드 도구는 빌드를 위한 도구를 의미한다. 빌드?
빌드 - 우리가 코드를 작성한 소스 코드가 실행할 수 있는 형태로 변환하는 과정을 의미한다. intellij, visual studio에서 코드를 실행하는 것이 아니라 실행만 가능하게 하는 상태로 만들어내는 과정이다. 소스코드를 컴퓨터가 이해할 수 있는 기계어로 번역하여 실행 파일을 만들어내기까지의 단계이다.
Gradle과 Maven 역시 빌드 도구이다. 이것들이 필요한 이유는 개발을 할 때 본인이 작성한 코드로만 구성하는 것은 불가능하기 때문이다. 수많은 라이브러리가 필요하다. 이것들을 다운받고 관리하고 컴파일, 빌드 과정까지 통합해서 우리를 도와주기에 빌드 도구는 필수적이다.
Maven
Maven은 xml 파일을 기반으로 이루어진다. pom.xml 파일에서 라이브러리들을 관리한다. 관리 대상인 라이브러리의 연관된 라이브러리들도 연동되어 관리해준다는 장점이 있다. 하지만 파일의 내용이 길어질수록 가독성이 매우 떨어지고 라이브러리가 서로 종속될 경우 매우 복잡한 구조를 나타내는 단점이 있다.
Gradle
Gradle은 Maven의 단점을 보완하여 build.gradle 파일에서 라이브러리들을 관리한다. groovy 언어를 기반으로 이루어져 있다. groovy는 jvm에서 실행되는 스크립트 언어이다. 속도가 Maven보다 확연히 빠르며 가독성 또한 뛰어나다. 가장 큰 차이점은 빌드 시 중복 컴파일을 진행하지 않는다. 변경되거나 수정한 부분만 컴파일을 진행한다. (이것이 대형 프로젝트에서는 큰 속도차이를 가져다줄것 같다.) 단점으로는 프로그램 자체가 메모리를 많이 차지하는 점이 있다.
결론: Maven이 점유율은 높을 수 있으나 단점을 보완해서 나온 Gradle 을 더 많이 이용하는 추세이다. 본인도 Gradle을 계속 사용할 예정이다.
'Spring' 카테고리의 다른 글
[Spring] JPA란? (간단정리) (0) | 2023.02.04 |
---|---|
[Spring] @JoinColumn & 연관관계 맵핑 @Mappedby (외래키 주인? 연관관계 주인?) (1) | 2023.01.13 |
[Spring] 웹 스코프 (request) & 프록시 (2) | 2022.08.11 |
[Spring] 빈 스코프 (프로토타입) (0) | 2022.08.09 |
[Spring] @Qualifier, @Primary & 빈 생명주기 콜백 (2) | 2022.08.06 |