초코딩(chocoding)

Maven과 Gradle의 개념과 특징 / 비교 / 차이점 본문

카테고리 없음

Maven과 Gradle의 개념과 특징 / 비교 / 차이점

sweetychocoding 2024. 4. 21. 13:58
728x90

빌드 관리 도구 (Build Tool)

-> MavenGradle은 모두 빌드 관리 도구이다.

 

-> 빌드 관리도구는 다음과 같은 작업을 수행한다.

1. 종속성 다운로드 - 전처리 (preprocessiong)

2. 소스코드를 바이너리 코드로 컴파일 (compile)

3. 바이너리 코드를 패키징 (packaging)

4. 테스트 실행 (testing)

5. 프로덕션 시스템에 배포 (distribution)

 

빌드 툴로는 Ant, Maven, Gradle 등이 있다.

 

 

 

 

 

1. Maven

=> java 전용 프로젝트 관리 도구로, lifecycle 관리 목적 빌드 도구이며, apache ant의 대안으로 만들어졌다.

maven은 아파치 라이센스로 배포되는 오픈 소스 소프트웨어이다.

 

-> lifecycle 관리 도구로, 정해진 lifecycle에 의하여 작업을 수행하며, 전반적인 프로젝트 관리 기능을 포함하고 있다.

clean - validate - compile - test - package - verify - install - site - deploy.

 

 

-> maven은 필요한 라이브러리를 pom.xml에 정의한다. 이를 프로젝트 모델링이라고 한다.

 

 

 

 

 

2. Gradle

=> Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 툴이며, ant builder와 groovy script를 기반으로 구축되어 기존 ant의 역할과 배포스크립의 기능을 모두 사용 가능하며 스프링 부트와 안드로이드에서 사용된다.

(*Groovy : JVM에서 실행되는 스크립트 언어로서, jvm에서 동작하지만 소스코드를 컴파일할 필요 없음. java와 호환 가능하며 java class file을 groovy class로 사용 가능)

 

-> 빌드 속도가 maven에 비해 10~100배 가량 빠르며 java, c/c++, python 등을 지원한다.

 

-> 가독성이 좋음 : 코딩에 의한 간결한 정의가 가능하므로 가독성이 좋음

-> 재사용 용이 : 설정 주입 방식을 사용하므로 재사용에 용기

->  구조적인 장점 : build script를 groovy 기반의 DSL(Domail Specific Language)을 사용하여 코드로서 설정 정보를 구성하므로 구조적인 장점이 있음

-> 편리함 : gradle 설치 없이 gradle wrapper를 이용하여 빌드를 지원함

-> 멀티 프로젝트 : gradle은 멀티 프로젝트 빌드를 지원하기 위해 설계된 빌드 관리 도구

-> 지원 : maven을 완전 지원함

 

 

 

 

 

 

3. Maven vs Gradle

 

=> 스크립트 길이와 가독성 면에서 gradle이 우세함

 

=> 빌드와 테스트 실행 결과 gradle이 더 빠름

      : gradle은 캐시를 사용하므로 테스트 반복 시 실행 결과 시간의 차이가 더 커짐

 

=> 의존성이 늘어날 수록 스크립트 품질의 차이가 커짐

      : maven은 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속 받아야하지만, gradle은 설정 주입 방식을          사용하므로 멀티 프로젝트에 적합함

 

 

 

 

 

 

 

.

.

.

ref) 

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

 

Maven과 Gradle의 개념 및 비교

스프링부트 프로젝트를 하며 여러 가지 기능 구현을 하면서 여러 의존성 라이브러리를 추가해야하는 경우가 많았다. 따라서 추가하는 방법을 위해 공식 문서나 스택오버 플로우, 블로그 등을

velog.io

 

728x90