Step-by-Step
[Spring] Gradle vs Maven 본문
빌드(Build)
- 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물(.jar, .war)로 변환하는 과정 또는 그에 대한 결과물
- 소프트웨어 빌드에 있어 가장 중요한 단계들 중 하나는 소스 코드 파일이 실행 코드로 변환되는 컴파일 과정
빌드 관리 도구 (Build Tool)
- 빌드를 자동화해서 도와주는 도구
- 프로젝트에서 필요한 xml, properties, jar 파일들을 자동으로 인식하여 빌드해주는 도구
- 소스코드에서 어플리케이션 생성을 자동화하기 위한 프로그램
- 프로젝트 생성, 정보 관리, 테스트 빌드, 배포 등의 작업을 진행해줌
- 외부 라이브러리를 참조하여 자동으로 다운로드 및 업데이트를 관리함
( 빠른 기간 동안 계속해서 늘어나는 라이브러리 추가 및 프로젝트 진행시 라이브러리의 버전 동기화 어려움을 해소 )
※ Java의 대표적인 빌드 도구 : Ant, Maven, Gradle
Spring 프로젝트 빌드 도구
- Maven
- Gradle
Maven
- XML 기반의 대표적인 JAVA 프로젝트용 빌드 도구
- pom.xml 파일을 통해 정형화된 빌드 시스템으로 프로젝트를 관리함
※ pom.xml 역할
- 프로젝트 정보 관리
- 해당 프로젝트에서 사용하는 외부 라이브러리 관리
- 해당 프로젝트의 빌드 관련 설정
Gradle
- Groovy 기반의 DSL을 활용한 빌드 관리 도구
- build.gradle 파일에 빌드에 필요한 설정 작성하여 프로젝트 관리
- 프로젝트 내부의 업데이트된 부분을 체크하여 빌드에 점진적으로 추가됨
(→ 업데이트가 이미 반영된 빌드의 부분은 더이상 재실행 X // 빌드 시간 단축!)
※ DSL(Domain Specific Language) : 도메인 특화 언어 - 특정 도메인을 적용하는데 특화된 컴퓨터 언어
※ Incremental build : 반복적인 빌드 과정에서 변경된 소스코드에 의존성이 있는 대상들만 추려서 다시 빌드
※ Groovy 언어
- JVM에서 실행되는 스크립트 언어
- Java와 호환이 되며, 문법적으로 유사함
Maven vs Gradle
Maven | Gradle |
고정적이고 선형적 단계의 모델 기반 | 작업 의존성 그래프 기반 |
프로젝트 규모 클수록 빌드 시간 증가 | Incremental build로 빌드 시간 단축 |
XML 기반의 빌드 설정 파일로 낮은 가독성 | Groovy 기반의 빌드 설정 파일로 높은 가독성 |
의존성 자동 업데이트 | Concurrent에 안전한 캐시 허용 |
모든 프로젝트에 적용가능한 일괄적인 사용법 | Wrapper를 통해 Gradle이 설치되지 않은 환경에서도 빌드 가능 |
정해진 라이프 사이클이 있어 임의로 설정하기 복잡함 | 설정에 대한 구조적인 틀을 벗어나 코딩으로 정의 가능 |
점유율은 Maven이 먼저 나와서 더 높지만, Gradle이 많아지는 추세라고 한다!
애초에 Maven의 단점을 보완한 부분이 많이 보이기 때문에 Gradle로 프로젝트를 생성하였다!
[참조]
'언어 > Java Spring' 카테고리의 다른 글
[Spring] Spring Security (0) | 2022.05.02 |
---|---|
[Java Spring] JPA에 대한 이해 (0) | 2022.03.16 |