Maven과 Gradle 차이

ImOk·2022년 1월 4일
0

👩‍💻 웹 개발

목록 보기
13/14
post-thumbnail

1. 빌드 관리 도구(Build Tool)란?

java 코드와 프로젝트 내에 필요한 각종 xml, properties, jar 파일들을 JVM이나 WAS가 인식할 수 있도록 패키징 해주는 빌드 과정 빌드 자동화 도구
프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램
개발에 필요한 다양한 외부 라이브러리들을 다운받을 필요없이, 빌드도구 설정파일에 필요한 라이브러리 종류와 버전들, 종속성 정보를 명시하여 필요한 라이브러리들을 설정파일을 통해 자동으로 다운로드 해주고 이를 간편히 관리해주는 도구이다.


2. Maven

  • java용 프로젝트 관리도구로 Apache의 Ant 대안으로 만들어짐
  • 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml 파일에 명시
  • Maven은 외부저장소에서 필요한 라이브러리와 플러그인들을 다운로드 한다음, 로컬시스템의 캐시에 모두 저장한다.

3. Gradle

  • Apacahe Maven과 Apache Ant에서 볼수 있는 개념들을 사용하는 대안으로써 나온 프로젝트 빌드 관리 툴이다.
  • 빌드툴인 Ant Builder와 그루비 스크립트를 기반으로 구축되어 기존 Ant의 역할과 배포 스크립트의 기능을 모두 사용가능하다.
  • 안드로이드 앱을 만들때 필요한 공식 빌드시스템이기도 하며 JAVA, C/C++, Python 등을 지원한다.
  • Groovy 언어를 사용한 Domain-specific-language를 사용한다. (설정파일을 xml파일을 사용하는 Maven보다 코드가 훨씬 간결하다.)
  • Gradle의 경우 별도의 빌드스크립트를 통하여 사용할 어플리케이션 버전, 라이브러리등의 항목을 설정 할 수 있다.
  • 장점으로는 스크립트 언어로 구성되어 있기때문에, XML과 달리 변수선언, if, else, for등의 로직이 구현가능하여 간결하게 구성 가능하다.

4. Gradle VS Maven

GradleMaven
작업 의존성 그래프를 기반Maven은 고정적이고 선형적인 단계의 모델 기반
Groovy 를 사용하기 때문에, 동적인 빌드는 Groovy 스크립트로 플러그인을 호출하거나 직접 코드를 짜면 된다.Build라는 동적인 요소를 XML로 정의하기에는 어려운 부분이 많다.
설정 주입시 프로젝트의 조건을 체크할 수 있어서 프로젝트별로 주입되는 설정을 다르게 할 수 있다.설정 내용이 길어면서 가독성 떨어짐
어떤 태스크가 업데이트되었고 안되었는지를 체크하기 때문에 incremental build를 허용한다. 따라서 이미 업데이트된 태스크에 대해서는 작업이 실행되지 않으므로 빌드 시간이 훨씬 단축된다. Maven보다 최대 100배 빠르다.의존관계가 복잡한 프로젝트 설정하기에는 부적절
설정주입방식 (Configuration Injection) 방식을 사용해서 공통 모듈을 상속해서 사용하는 단점을 커버특정 설정을 소수의 모듈에서 공유하기 위해서는 부모 프로젝트를 생성하여 상속하게 해야함 (상속의 단점 생김)
concurrent에 안전한 캐시를 허용. 2개 이상의 프로젝트에서 동일한 캐시를 사용할 경우, 서로 overwrite되지 않도록 checksum 기반의 캐시를 사용하고, 캐시를 repository와 동기화시킬 수 있다

🔗 참고 자료

https://jisooo.tistory.com/entry/Spring-%EB%B9%8C%EB%93%9C-%EA%B4%80%EB%A6%AC-%EB%8F%84%EA%B5%AC-Maven%EA%B3%BC-Gradle-%EB%B9%84%EA%B5%90%ED%95%98%EA%B8%B0

profile
ImOk👌

0개의 댓글