스프링을 사용하면서 빌드 관리 도구인 그래들만 사용하였다.
처음 스프링을 학습하면서 자연스럽게 그래들을 사용했고 프로젝트를 생성할때 메이븐 이라는 것도 있구나 정도 봤었고 프로젝트를 진행하면서 열심히 삽질? 구글링을 통해서 많은 사람들이 그래들 뿐만 아니라 메이븐을 사용했다는걸 알았다.
당시 메이븐과 그래들의 차이점이 뭘까? 하고 구글링을 통해 '아 메이븐은 pom.xml파일에 필요한 각종 의존성과 라이브러리 추가,버전 등의 프로젝트 설정 정보를 xml형식으로 나열해서 하나하나 직접 작성하고 설정하는구나' 정도만 알고 별도로 정리하지 않았기에 주말에 일찍 일어나기도 했고 정리를 해보려고한다!
빌드?
빌드란 소스코드 파일들을 컴퓨터에서 실행할 수 있는 소프트웨어로 변환하는 일련의 과정으로, 컴파일, 테스팅, 배포 등 모든 과정의 집합이다.
빌드 관리 도구?
소스코드에서 어플리케이션 생성을 하면서 여러가지 여부 라이브러리를 사용하는데, 이 빌드 관리 도구는 사용자가 직접 관리할 필요 없이 필요한 라이브러리들을 자동으로 관리한다.
단계 | 내용 |
---|---|
Default(Build) | 일반적인 빌드 프로세스를 위한 모델이다. |
Clean | 빌드 시 생성되었던 파일들을 삭제하는 단계 |
Validate | 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인하는 단계 |
Compile | 프로젝트의 소스코드를 컴파일 하는 단계 |
Test | 유닛(단위) 테스트를 수행 하는 단계(테스트 실패시 빌드 실패로 처리, 스킵 가능) |
Pacakge | 실제 컴파일된 소스 코드와 리소스들을 jar, war 등등의 파일 등의 배포를 위한 패키지로 만 드는 단계 |
Verify | 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인하는 단계 |
Install | 패키지를 로컬 저장소에 설치하는 단계 |
Site | 프로젝트 문서와 사이트 작성, 생성하는 단계 |
Deploy | 만들어진 package를 원격 저장소에 release 하는 단계 |
3-1. Gradle의 Lifecycle
단계 | 내용 |
---|---|
Initialization (초기화) | Gradle은 단일 및 다중 프로젝트 빌드를 지원하며 초기화 단계에서Gradle은 빌드에 참여할 프로젝트를 결정하고 이러한 각 프로젝트에 대한 Project 인스턴스를 생성 |
Configuration (구성) | 프로젝트 개체가 구성되며 빌드의 일부인 모든 프로젝트의 빌드 스크립트가 실행 |
Execution (실행) | Gradle은 실행될 구성 단계에서 생성 및 구성된 작업의 하위 집합을 결정. 하위 집합은 gradle 명령과 현재 디렉터리에 전달된 작업 이름 인수에 의해 결정되며 Gradle은 선택한 각 작업을 실행 |
흔히들 Gradle이 대세라고 하고 나 또한 그렇게 알고있었다. 하지만 여전히 Maven을 많이들 사용하고 구글 트랜드 지수에서도 Gradle보다 Maven이 앞선다.
그럼에도 Gradel 사용을 고려해야 하는 이유들이 있다.
Gradle이 Maven의 장점을 계승한 점과 시기적으로 늦게 나온 만큼 사용성, 성능 등 비교적 뛰어난 스펙을 가지고 있다. 특히, 속도가 빠르며 Groovy 기반으로 설정이 쉽고, 설정 주입 방식을 사용하여 멀티 프로젝트에 사용하기 좋다.
하지만 메모리를 많이 잡아먹는다는 단점이 있다.
나 또한 프로젝트를 Gradle로 진행하여 Maven의 XML 형식을 지키지 않아도 된다는 점에서 많이 편했고 매력을 느꼈다. 하지만 Maven을 직접 사용해보진 않았기에 기회가 된다면 추후 두가지 모두 사용해보고 내가 직접 느낀 차이점과 편리함에 대해 글을 남겨야겠다.