Maven -> Gradle 변경

3232 단어 SpringbootSpringboot

Maven에서 Gradle로 바꾼 이유

기존 회사 프로젝트 빌드 관리 도구가 Maven인데, 빌드 과정 중에 많은 시간이 소요되어, (5분 이상) 급한 상황에서 수정 후 배포까지 신속하게 대응되지 않았다. 그래서 빌드 관리 도구를 Gradle로 바꾸기로 결정했다. Gradle이 나온지 얼마 되지 않은것도 아니며, 아직까지 많은 프로젝트들이 Maven을 쓰고 있지만 Gradle로 넘어가는 비율이 점점 늘어나고 있는 추세이다.

  • 2018년 사용 빌드 도구 설문조사 [출처]

  • 2021년 사용 빌드 도구 설문조사 [출처]

Gradle 설치

다운로드 페이지에서 원하는 버전을 다운로드 받고, 임의의 경로에 압축을 풀어준다.
EX) C:\gradle-6.8.3 or C:\Gradle\gradle-6.8.3

환경 변수 설정

JDK 설치 시 환경변수가 필요하듯이, Gradle도 동일하다.

[시스템 속성] -> [환경 변수]
1. 시스템 변수

  • 변수 이름 : GRADLE_HOME
  • 변수 값 : GRADLE 압축해제 한 경로 EX) C:\gradle-6.8.3
  1. 사용자 변수
  • 변수 이름 : Path
  • 변수 값 : %GRADLE_HOME%\bin

Gradle 설치 확인

cmd에서 gradle -version 입력 후

사진과 같이 설치한 버전이 표시되면 이상없이 설치 완료!

Gradle 초기화 및 설정

Gradle을 사용가능한 상태로 변경해야한다.
cmd에서 pom.xml이 있는 폴더(프로젝트 폴더)까지 이동 후 gradle init --type pom를 입력해 gradle 초기화 및 유형을 지정한다. 이후 .gradle, setting.gradle, build.gradle 등의 파일이 생성된다.

설정 파일들이 생성된 후 반드시 Gradle로 Import 해야되는데,
Intellij의 경우 하단에 Gradle Project로 Import 여부를 묻는 팝업창이 생성되고 Gradle로 Import 해야한다.

build.gradle 수정

사내 프로젝트는 웹 어플리케이션이므로 JAR 대신 WAR를 생성해야한다.

plugins {
    id 'java'
    id 'maven-publish'
    id 'war' // 배포 시 jar 대신 war를 생성한다
}

repositories {
    mavenCentral() // 중앙 저장소 이용할 경우 MavenLocal() 대신 MavenCentral()
    maven {
        url = uri('https://repo.maven.apache.org/maven2/')
    }
}
  • build에서 bootWar 또는 bootJar가 없을 때
plugins {
    id 'java'
    id 'maven-publish'
    id 'war'
    id 'org.springframework.boot' version '2.X.X.RELEASE' // 추가하면 bootWar 생김
}

build.gradle을 수정했는데도 tasks에 bootWar를 찾을 수 없는 문제가 생겼다.
구글링 결과 plugins에 'org.springframework.boot' version '2.X.X.RELEASE'를 추가하고
Gradle Project를 새로고침했더니 LifeCycle - tasks에 bootJar 또는 bootWar가 만들어진다.

Maven vs Gradle 속도 비교

Gradle이 Maven보다 최대 100배 빠르다 말은 있었지만, 사실 직접 테스트해보는게
제일 체감이 크기 때문에 사내 프로젝트로 Maven과 Gradle을 비교해 보았다.

clean -> build (test 포함)

  • Maven : 2분 10초
  • Gradle : 약 1분

clean -> build (cache 활성화)

  • Maven : 1분 40초
  • Gradle : 15초

WAR 파일 생성

  • Maven : 5분
  • Gradle : 30초

지금까지 Maven 에서 Gradle로 변경하는 과정을 살펴보았다. 처음엔 Gradle의 성능에 대해 의문을 가졌지만, 테스트를 해보니 Maven보다 매우 뛰어난 성능이었고, 문법또한 매우 편리했다. Maven에서 Gradle로 넘어가는 과정이 어렵지 않았다는 점도 만족스러웠다.

좋은 웹페이지 즐겨찾기