본문 바로가기
Web/Backend

Maven Gradle 차이

by 로또뚜이 2022. 11. 14.
반응형


Maven

아파치 소프트웨어 재단에서 개발하는 Java 기반 프로젝트의 라이프사이클 관리를 위한 빌드 도구. 이에 따라 컴파일과 빌드를 동시에 수행, 테스트를 병행하거나 서버 측 Deploy 자원을 관리할 수 있는 환경을 제공한다. 또한 라이브러리 관리 기능도 내포하고 있다. Java로 개발하다 보면 다양한 라이브러리를 필요로 하게 되는데, settings.xml 또는 pom.xml 파일에 필요한 라이브러리만 적으면 Maven이 알아서 다운받고 설치해주고 경로까지 지정해준다.
 
장점
  • 컴파일과 빌드를 동시에 수행할 수 있다.
  • 서버의 Deploy 자원을 관리할 수 있는 환경을 제공한다.
  • pom.xml 파일을 통해 관리하므로 개발, 유지보수 측면에서 오픈소스 라이브러리, 프로젝트 등 관리가 용이하다.
  • IDE에 종속된 부분들을 제거할 수 있다.
  • Maven Profile 기능을 통해 배포 설정 파일을 관리하고 배포 파일을 생성할 수 있다.

단점
  • Maven에서 기본적으로 지원하지 않는 빌드 과정을 추가해야 하는 경우 상당한 고생이 따른다.
  • 특정 플러그인이 설정이 약간만 달라도 해당 설정을 분리해서 중복 기술할 때가 발생한다. 불필요하게 설정이 길어지고 중복, 가독성 저하가 발생하여 유지보수성을 떨어뜨린다.
  • 이와 같은 단점을 해결하기 위해, Gradle(그레이들)이라는 새로운 빌드 툴이 등장하였다. Gradle은 안드로이드 애플리케이션의 기본 빌드 툴로 채택되었다.

Gradle

아파치 소프트웨어 재단에서 개발하는 Java 기반 프로젝트의 라이프사이클 관리를 위한 빌드 도구. 이에 따라 컴파일과 빌드를 동시에 수행, 테스트를 병행하거나 서버 측 Deploy 자원을 관리할 수 있는 환경을 제공한다. 또한 라이브러리 관리 기능도 내포하고 있다. Java로 개발하다 보면 다양한 라이브러리를 필요로 하게 되는데, settings.xml 또는 pom.xml 파일에 필요한 라이브러리만 적으면 Maven
 
 
오픈 소스로 Maven의 장황한 설정 파일과 에러가 쉽게 나는 문제를 해결하기 위해서 만들어졌다. Groovy 기반의 빌드 도구로 안드로이드 스튜디오의 공식 빌드 도구이기도 하다.

지원하는 언어들로는 JavaGroovyKotlin 같은 언어들이다.

build.gradle 파일에서 사용할 라이브러리를 지정할 수 있다.
Maven이랑 다른점으로는 라이브러리 파일을 무려 코드로 쓸 수 있다.
 

Maven Gradle 차이점

1. 스크립트 길이와 가독성 면에서 gradle이 우세하다.

2. 빌드와 테스트 실행 결과 gradle이 더 빠르다. (gradle은 캐시를 사용하기 때문에 테스트 반복 시 차이가 더 커진다.)

3. 의존성이 늘어날 수록 성능과 스크립트 품질의 차이가 심해질 것이다.

 

maven은 프로젝트가 커질수록 빌드 스크립트의 내용이 길어지고 가독성이 떨어집니다.

반면에 gradle은 훨씬 적은 양의 스크립트로 짧고 간결하게 작성할 수 있습니다.

 

maven이 정적인 형태의 XML 기반으로 작성되어 동적인 빌드를 적용할 경우 어려움이 많다면,

gradle은 Groovy를 사용하기 때문에 동적인 빌드는 Groovy 스크립트로 플러그인을 호출하거나 직접 코드를 짜면 됩니다.

발췌 : https://dev-coco.tistory.com/65

 

메이븐(Maven)과 그래들(Gradle)의 개념 및 비교

스프링과 스프링부트를 공부 하려던 중 maven과 gradle을 알게되었습니다. maven과 gradle이 빌드관리도구인 것은 알고있지만 자세한 개념은 모르기에 maven과 gradle 각각의 개념과 정확한 차이점을 알

dev-coco.tistory.com

 

위처럼 둘다 프로젝트를 빌드하기 위한 툴로 사용되지만 비교적 최근에 많이 사용되어지고 있는 Gradle이 속도와 개발자 편의성면에서 뛰어난 모습을 보여주고 있습니다.

 

저 또한 과거 전자정부프레임워크를 다룰때 Maven을 사용해보고 그 뒤로는 Gradle만 사용해왔습니다.

별다른 생각없이 환경에 맞춰 사용하다 둘이 어떤 차이가 있는지에 대해 간략히 정리해봤습니다.

반응형

댓글