Spring

Maven vs Gradle

JUNGKEUNG 2021. 11. 5. 16:01

Maven


 

자바용 프로젝트 관리 도구이다 아파치 앤트의 대안으로 만들어 졌다.

아파치 앤트는 자바 프로그래밍 언어에서 사용하는 자동화된 소프트웨어 빌드 도구이다

쉽게 말해 프로젝트를 진행하면서 사용할 수있는 많은 라이브러리들을 관리해두는 도구이다.

메이븐은 네트워크를 통해서 연관된 라이브러리 까지 같이 업데이트를 해주기 때문에 과거에 일일히 수동으로 다 업데이트 혹은 견결 시켜주던 것을 자동으로 해준다는 편리함이 있다.

 

 

 

Gradle 


 

Gradle은 작업 의존성 그래프를 기반으로하는 반면 Maven은 고정적이고 선형적인 단계의 모델을 기반으로한다고 한다.

성능 측면에서는 둘 다 다중 모듈 빌드를 병렬로 실행할 수 있지만, Gradle은 어떤 task가 업데이트되었고 안되었는지를 체크하기 때문에 incremental build를 허용한다. 이미 업데이트된 테스크에 대해서는 작업이 실행되지 않으므로 빌드 시간이 훨씬 단축된다.

  • 라이브러리 관리 : 메이븐 레파지토리를 동일하게 사용할 수 있어서 설정된 서버를 통하여 라이브러리를 다운로드 받아 모두 동일한 의존성을 가진 환경을 수정할 수 있다. 자신이 추가한 라이브러리도 레파지토리 서버에 올릴 수 있다.
  • 프로젝트 관리 : 모든 프로젝트가 일관된 디렉토리 구조를 가지고 빌드 프로세스를 유지하도록 도와준다.
  • 단위 테스트 시 의존성 관리 : junit 등을 사용하기 위해서 명시한다.

- 고도로 사용자 정의된 빌드를 작성하기 위해서는 커스터마이징이 간편한 Gradle을 사용하는게 훨씬 낫다.

 

 

Gradle이 Maven보다 좋은점


  • Build라는 동적인 요소를 XML로 정의하기에는 어려운 부분이 많다.
    • 설정 내용이 길어지고 가독성 떨어진다
    • 의존관계가 복잡한 프로젝트 설정하기에는 부적절 하다
    • 상속구조를 이용한 멀티 모듈 구현
    • 특정 설정을 소수의 모듈에서 공유하기 위해서는 부모 프로젝트를 생성하여 상속하게 해야함 (상속의 단점 생김)
  • Gradle은 그루비를 사용하기 때문에, 동적인 빌드는 Groovy 스크립트로 플러그인을 호출하거나 직접 코드를 짜면 된다.
    • Configuration Injection 방식을 사용해서 공통 모듈을 상속해서 사용하는 단점을 커버했다.
    • 설정 주입시 프로젝트의 조건을 체크할 수 있어서 프로젝트별로 주입되는 설정을 다르게 할 수 있다.

'Spring' 카테고리의 다른 글

JpaReporitory vs EntityManager  (0) 2021.11.23
엔티티 설계 주의점  (0) 2021.11.21
Spring 이란?  (0) 2021.07.14
Spring boot S3 업로드, 수정, 삭제  (0) 2021.06.18
JAR vs WAR  (0) 2021.06.18