TIL

Maven VS Gradle

빈코 2022. 5. 2. 16:36
이동욱 님의 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 보면서 토이 프로젝트를 진행하다가 Gradle 빌드 도구를 접하게 되었습니다. 평소에 실무에서도 Maven을 주로 사용하였는데 '두 도구의 차이가 뭘까?'라는 생각에 이어 포스팅을 하게 되었습니다.

 

로고
Maven Vs Gradle

 

Maven

프로젝트를 진행하다 보면 많은 라이브러리를 활용해서 개발을 하게 됩니다. 이 때 사용되는 라이브러리들의 수가 많아지면 그만큼 라이브러리들을 관리하는 것이 힘들어지게 됩니다. Maven은 이러한 문제를 해결해주는 일종의 도구입니다. Maven은 내가 사용할 라이브러리뿐만 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해 자동으로 다운로드해줍니다.

 

LifeCycle

Maven에서는 미리 정의하고 있는 빌드 순서가 있습니다. 이 순서를 라이프사이클이라 부릅니다.

  • clean : 이전 빌드에서 생성된 파일 삭제
  • validate : 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인
  • complie : 프로젝트의 소스코드를 컴파일하는 단계
  • test : 유닛 테스트를 수행하는 단계
  • package : 실제 컴파일된 소스 코드와 리소스들을 jar등의 배포를 위한 패키지로 만드는 단계
  • verify : 통합테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인하는 단계
  • install : 패키지를 로컬 저장소에 설치하는 단계
  • site : 프로젝트 문서를 생성하는 단계

등 더 많은 종류의 라이프사이클이 존재하며, 이를 크게 Clean, Build, Site 세 가지 라이프사이클로 나누고 있습니다. 각 단계를 모두 수행하는 것은 아니며 원하는 단계까지 수행할 수 있습니다. 또한 test 단계는 수행하지 않도록 스킵이 가능합니다.

 

POM - Project Object Model

<groupId>com.rmanger</groupId>
  <artifactId>rmanger</artifactId>
  <name>rmanger</name>
  <packaging>war</packaging>
  <version>1.0</version>

  <properties>
    <java-version>1.8</java-version>
    <org.springframework-version>4.2.4.RELEASE</org.springframework-version>
    <org.aspectj-version>1.6.10</org.aspectj-version>
    <org.slf4j-version>1.6.6</org.slf4j-version>
    <org.apache.tiles-version>3.0.7</org.apache.tiles-version>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
  </properties>
  <dependencies>
    <!-- Spring -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${org.springframework-version}</version>vue --versio
      <exclusions>
        <!-- Exclude Commons Logging in favor of SLF4j -->
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

pom은 이름 그대로 Project Object Model의 정보를 담고 있는 파일입니다. 이 파일이 Maven에 있어 제일 중요하므로 따로 포스팅을 해놓았습니다. 아래 링크를 클릭하면 pom.xml 설정 방법에 대해 알 수 있습니다.

 

 

 

Maven pom.xml 설정 뜯어보기

개발자들이 편하게 서로 협력하면서 일을 할 수 있도록 개발된 프로그램 중 Maven이 있습니다. Maven은 프로젝트를 빌드해주고 라이브러리를 관리해주는 기능들이 있으며, 더 나아가 필요한 라이

binco.tistory.com

 

 

Gradle

  1. Gradle은 기본적으로 빌드 배포 도구입니다. 안드로이드 앱을 만들 때 필요한 공식 빌드 시스템이기도 하며 Java, C/C++, Python 등을 지원합니다.
  2. 빌드 툴인 Ant Builder와 그루비 스크립트를 기반으로 구축되어 기존 Ant의 역할과 배포 스크립트의 기능을 모두 사용 가능합니다.
  3. 기본 Maven의 경우 XML로 라이브러리를 정의하고 활용하도록 되어 있으나(pom), Gradle의 경우 별도의 빌드 스크립트를 통하여 설정할 수 있습니다.
  4. Groovy 스크립트 언어로 구성되어 있기에 XML과 달리 변수선언, if, else, for 등의 로직이 구현 가능하며 간결하게 구성이 가능합니다.

 

Groovy

1. 그루비는 자바에 파이썬, 루비, 스몰토크 등의 특징을 더한 동적 객체 지향 프로그래밍 언어입니다.
2. 자바 가상 머신에서 작동하는 동적 타이핑 프로그래밍 언어입니다.
3. 자바 프로그래머들이 많은 학습을 하지 않고도 최신 프로그래밍 기법을 사용할 수 있습니다.
4. 도메인 전문 언어와 단순화된 문법을 지원하여 코드를 읽고 유지 보수하기 편해집니다.

 

build.gradle

plugins {
id 'org.springframework.boot' version '2.5.2'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}


Gradle이 Maven보다 좋은점

  • 스크립트 길이와 가독성 면에서 gradle이 우세합니다.
  • 의존성이 늘어날수록 성능과 스크립트 품질의 차이가 심해집니다.
  • Gradle은 그루비를 사용하기 때문에, 동적인 빌드는 Groovy 스크립트 플러그인을 호출하거나 직접 코드를 짜면 됩니다.
  • 빌드 타임 속도가 Maven보다 10~100배 빠릅니다.

 

속도차이표
속도차이 표

 

 


👨‍👩‍👦‍👦 오픈채팅방 운영

취업을 준비하는 예비 개발자분들을 위한 질문&답변할 수 있는 공간을 만들었습니다. 취업과 이직을 하기 위해서 어떤 걸 중점적으로 준비해야 하는지부터 포트폴리오&이력서 작성법 등 다양한 질문들을 받고 답변을 드립니다. 참여하셔서 다양한 정보 얻고 가시면 좋을 것 같네요😁

 

참여코드 : 456456

https://open.kakao.com/o/gVHZP8dg

 

비전공 개발자 취업 준비방(질문&답변)

#비전공 #개발자 #취업 #멘토링 #부트캠프 #국비지원 #백엔드 #프론트엔드 #중소기업 #중견기업 #자바 #Java #sql

open.kakao.com

 


👨‍💻 전자책 출간

아울러 제가  🌟비전공자에서 2년만에 보안 전문 중견기업으로 이직 한 방법들을 정리한 전자책을 출간 하게 되었습니다. 어떤 걸 공부해야 하는지, 이직을 위해서 무엇을 준비해야 하는지, 제가 받았던 기술 면접 리스트 등 다양한 목차로 구성되어 있습니다. 또한, 구매 시 1:1 채팅을 이용하여 포트폴리오 첨삭을 도와드리고 있습니다. 🐕전자책으로 얻은 모든 수익은 유기견 센터 '팅*벨 입양센터'에 후원될 예정입니다. 관심 있으신 분들은 아래 링크를 참고해주세요😁

https://kmong.com/gig/480954

 

비전공개발자 2년만에 중견기업 들어간 방법 | 14000원부터 시작 가능한 총 평점 0점의 전자책, 취

0개 총 작업 개수 완료한 총 평점 0점인 Binco의 전자책, 취업·이직 전자책 서비스를 0개의 리뷰와 함께 확인해 보세요. 전자책, 취업·이직 전자책 제공 등 14000원부터 시작 가능한 서비스

kmong.com


 

마치며

Maven과 Gradle 중 하나를 선택하라 하면 누구나 성능면에서 우수한 gradle을 당연히 선택할 것입니다. 하지만 지금까지 Maven을 사용해왔다는 익숙함과 Groovy 문법을 익혀야 하는 단점이 있기 때문에 아직까지도 Maven을 많이 사용하고 있습니다. 이제는 추후에 빌드 타임 비용 문제까지 생각하여 Gradle에 좀 더 친숙해져야 할 것 같습니다. 두 도구 다 처음 접하시는 분이라면 Gradle로 시작하시는 것을 추천해드리고 싶네요!

 

 

관련 포스팅

* [ Maven pom.xml 뜯어보기 ]

반응형