2023.08.14

Maven VS Gradle

스프링을 하다보면, 빌드 도구로 메이븐과 그래들 중 선택하는 경우가 있다. 우선 각각 무엇인지 알아보고, 빌드 도구를 선택하자. 그전에 Ant 와 Make에 대해서 간단히 설명해보겠다.


Ant 와 Make

Ant는 자바 빌드 툴로 알려져 있다. xml 형태로 설정하기 때문에 복잡하지 않고, 독립적인 플랫폼이기 때문에 OS 에 상관없이 프로젝트를 진행할 수 있다. Ant는 리눅스의 Make와 비슷한 기능을 제공하는데, Make는 C에서 빠르고 쉽게 컴파일할 수 있도록 Make 파일을 생성하는데, 이 Make 파일은 내부에 gcc 명령어들을 모아두어 매크로 처럼 사용할 수 있는 특징이 있다. Ant 도 똑같이 xml 에 명령어를 정의하는 등 설정을 통해 쉽게 빌드할 수 있게 하는 것이다.



메이븐(Maven)

메이븐은 아파치 라이센스로 Ant의 대안으로 만들어 졌는데, 주로 수많은 라이브러리를 관리해주는 도구이다. 라이브러리와 연관된 다른 라이브러리도 모두 연동이 되기 때문에 업데이트 시 같이 업데이트를 해주는 장점이 있다.

메이븐은 POM(Project Object Model) 이라는 것을 사용하는데, 프로젝트 정보, 빌드 설정, 환경, 연관 정보를 정의하는 것을 의미한다. 해당 정보를 pom.xml 에 정의 후 사용하게 된다.


LifeCycle

Maven에서 미리 정의하고 있는 빌드 순서

  • clean : 이전 빌드에서 생성된 파일 제거
  • validate : 프로젝트가 올바른지 확인
  • complie : 프로젝트 소스코드 컴파일
  • test : 유닛 테스트 수행
  • package : 실제 컴파일된 소스 코드와 리소스들을 jar 등으로 배포하기 위한 패키지로 만듬
  • verify : 통합 테스트 결과에 따른 품질 기준을 충족하는 지 확인
  • install : 패키지를 로컬 저장소에 설치하는 단계
  • site : 프로젝트 문서를 생성하는 단계

이외에도 많은 종류의 라이프 사이클이 있는데, 크게 Clean, Build, Site 세가지로 나누고 있다. 각 단계를 모두 거치는 것은 아니고, 원하는 단계를 설정할 수 있다.


단점

동적인 요소인 build 관련 내용을 XML 으로 정의하기 어렵고, 설정 내용이 길어지면 가독성이 떨어진다. 또한 의존관계가 복잡한 프로젝트에는 부적절하다.



그래들(Gradle)

그래들은 메이븐 보다 쉽게 사용할 수 있다. 스크립트 길이 등 가독성이 좋고, 안드로이드 앱의 공식 빌드 시스템으로 메이븐 보다 빌드 속도가 빠르다는 장점이 있다. 그래들은 자바 뿐만아니라 파이썬, C, C++ 도 지원하고, Ant Builder 와 Groovy 스크립트 기반으로 Ant의 역활과 배포 스크립트 기능도 가능하다.


장점

Maven에서 동적 build의 단점에서 Groovy 스크립트로 구성되어 if, else 등의 로직으로 직접 구현 가능하고, 간편하게 설정이 가능하다. 의존성이 늘어날 수록 속도 및 스크립트 품질에 차이가 있다. 멀티 프로젝트 빌드에도 좋고, 업데이트가 이루어진 빌드는 재실행되지 않는 등 좋은 기능이 많다.


메이븐의 경우, 다른 모듈에 어떤 기능을 사용하려면 상속을 받는 형태이지만, 그래들은 주입하는 방식이기 때문에 모듈이 많은 경우에 적절하다. 설정 방식의 차이가 있지만, 비교적 빠르고 그래들이 Maven, Ant의 장점을 모두 포함하기 때문에 그래들을 주로 많이 사용한다.



Leave a comment