gradle/gradle wrapper & maven/maven wrapper 차이와 개념정리



1. 버전 관리 도구 Gradle, Maven과 문제점

프로그래밍을 하다보면 Gradle, Maven을 많이 보게 됩니다. 주로 JAVA 프로그래밍을 하신 분들은 매우 많이 보셨을 것입니다. Apache Maven과 Gradle은 의존성 관리 도구로 프로젝트에 필요한 라이브러리들을 자동으로 설치해주는 도구입니다.

기존에는 Maven, Gradle을 로컬에 설치해서 사용했습니다. 하지만 이러한 방식으로는 버전이 다르면 사용할 수 없다는 치명적인 문제가 있습니다. 예를 들어, Gradle 에서 ver 6.x.x 가 설치된 시스템에서, 프로젝트가 ver 7.x.x 로 채택하는 경우에는 사용시 에러가 발생합니다. 즉, 시스템의 Gradle 과 프로젝트 요구 Gradle 버전이 다른 경우 충돌이 납니다. 이는 Maven에서도 동일하게 적용됩니다.

매번 프로젝트를 수행할 때마다 시스템에 해당 프로젝트가 채택하는 버전을 다시 설치하는 일은 매우 시간이 많이 들고 불필요한 작업입니다. 다양한 프로젝트에 대응하기 어려우며 시간도 많이 소요됩니다.

1.1. 기존 Gradle 실행 방법

$ gradle build

1.2. 기존 maven 실행 방법

$ mvn clean package

2. 문제점 극복을 위한 wrapper 등장

이런 문제를 해결하기 위해서 바로 wrapper 라는 개념이 등장하였습니다. 각 프로젝트마다 이제 시스템에 설치된 Gradle을 사용하는 것이 아니라 프로젝트에 내장된 Gradle or Maven wrapper 를 사용하게 된 것입니다. 즉, 프로젝트마다 wrapper를 각각 하나씩 내장하여, 버전 문제를 해결하고 손쉽게 의존성을 관리할 수 있습니다.

2.1. Gradle project 와 실행 방법

image

$ ./gradlew build

2.2. Maven project 와 실행 방법

image

# mac
$ ./mvnw clean package

# windows
$ mvnw.cmd clean install

reference