숭어 개발 블로그

[Spring] Maven / Gradle 차이 특징 본문

Spring

[Spring] Maven / Gradle 차이 특징

숭어싸만코 2023. 8. 1. 18:47

Maven과 Gradle은 모두 빌드 관리 도구이다.

빌드도구란? 

ex) Ant, Maven, Gradle

- 소스코드에서 애플리케이션을 생성하면서 여러가지 외부 라이브러리를 사용하는데, 빌드 관리 도구는 필요한 라이브러리들을 자동으로 관리한다.

  1. 종속성 다운로드
  2. 소스코드를 바이너리코드로 컴파일
  3. 바이너리 코드를 패키징
  4. 테스트 실행
  5. 프로덕션 시스템에 배포

대규모 프로젝트에선 빌드프로세스를 수동으로 호출하는게 실용적이지 않지만 빌드도구를 사용하면 이를 일관되게 할 수 있다.


 

Maven이란?

- Maven은 Java전용 프로젝트 관리 도구로, 라이프사이클 관리 목적 빌드 도구이며, Apache Ant의 대안으로 만들어졌다.

- Maven은  pom.xml에 정의하는데 이를 프로젝트 모델링이라고한다. [ pom(Project Object Model) ]

pom.xml / <dependency>태그안에 필요한 라이브러리 등록

 

Maven 특징

1) LifeCycle
 -
미리 정해진 빌드순서

 - 메이븐은 프레임워크이기 때문에 동작 방식이 정해져있고, 미리 정의하고 있는 빌드 순서가 있다. 이를 라이프사이클(Lifecycle)이라 한다

  • 필요한 라이브러리를 특정문서(pom.xml)에 정의만 해주면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리 작동에 필요한 하위 라이브러리까지 네트워크를 통해서 자동으로 다운받아준다.
  • 중앙 저장소를 통한 자동 의존성 관리를 한다.
  • 중앙 저장소는 라이브러리를 공유하는 파일서버이고, 저장소는 아파치재단에서 운영관리하는 저장소를 사용할 수도 있고 별도의 사설 저장소를 사용할 수도 있다. 
  • 프로젝트 전체내용에 대한 기술 및 설정을 담당하는 pom과 라이브러리관리에 대한 dependency / repository 관리 모델 그리고 컴파일, 테스트, 패키징 등의 빌드생명주기를 다루는 라이프사이클 및 관련 플러그인들과의 연동을 다루는 부분으로 구성된다. 
  •  

 

Gradle이란?

- Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 툴이며, Ant Builder와 Groovy Script를 기반으로 구축되어 기존 Ant의 역할과 배포 스크립의 기능을 모두 사용 가능하며 SpringBoot 와 Android에서 사용 된다.

- Groovy : JVM에서 실행되는 스크립트 언어이다. JVM에서 동작하지만 소스코드를 컴파일 할 필요없고 Java와 호환되며, Java class file들을 Groovy class로 사용 가능하다.
Java 문법과 유사하여 빌드 처리를 관리할 수 있다.

- 빌드 속도가 Maven에 비해 10~100배 가량 빠르며, Java, C/C++, Python 등을 지원한다.

Gradle 특징

1. 가독성이 좋다

2. 재사용에 용이하다 : 설정 주입 방식(Configuration Injection)을 사용하므로 재사용성 용이

3. 구조적인 장점 : Build Script를 Groovy 기반의 DSL(Domail Specific Language)를 사용하여 코드로서 설정 정보를 구성하므로 구조적인 장점이 있다

4. 편리함 : Gradle 설치 없이 Gradle wrapper를 이용하여 빌드를 지원한다.

5.멀티프로젝트 : Gradle은 멀티 프로젝트 빌드를 지원하기 위해 설계된 빌드 관리 도구이다.

6. 지원 : Maven을 완전 지원하다.

build.gradle

 

Maven과 Gradle의 차이

- 가독성 면에서 Gradle 이 우세하다.

- 빌드와 테스트 실행 결과 Gradle이 더 빠르다. ( Gradle 은  캐시를 사용하므로 테스트 반복 시 시간 차이가 더 커진다.)

- 의존성이 늘어날 수록 스크립트 품질의 차이가 커진다 : Maven은 멀티프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속 받아야하지만, Gradle은 설정 주입 방식을 사용하므로 멀티프로젝트에 적합하다.

결론 : Gradle 좋다!

Comments