본문 바로가기

SPRING

[Spring] Maven Wrapper 설명 및 실행방법

spring 이나 spring boot 로 개발을 진행하신다면 Maven 과 Gradle 과 같은 build tool 을 사용해보신 적이 있으실 겁니다.

Maven 이나 Gradle 이 무엇인지는 잘 알고 있지만, Wrapper 는 무엇인지 잘 모르는 경우가 많습니다.

사실 저 같은 경우도 IDE 가 아닌 별도의 서버에서 CLI 로 빌드를 하여 MAVEN 을 띄우려 했을 때 mvnw 가 어떠한 동작을 하는지 몰랐었습니다.

단순 maven 을 이용하여 빌드하고 배포할 수 있지만, 좋은 환경을 구성하기 위해 wrapper 는 필수적입니다.

 

 

Maven Warpper 란 무엇인가 ?

Maven wrapper 란 개발자들이 Maven 을 별도의 환경에서 개발할 때 local machine 에 따로 설치를 원하지 않거나 Maven 의 특정 버전을 빌드하길 원할 때 사용될 수 있습니다.

다시말해, Maven wrapper 을 사용하면 빌드 시 버전이나 개발 환경에 더이상 의존하지 않아도 되며 독립적이게 됩니다.

Maven wrapper 만 가지고 있으면 별도로 설치하지 않아도 되며, classpath 별다른 Maven version 을 지정할 필요도 없습니다 .

 

 

Maven Wrapper 구성하기

Maven wrapper 를 추가하는 가장 쉬운 방법은 Maven wrapper plugin 를 사용하는 것 입니다.

project directory 로 이동한 후 해당 위치에서 mvn -N io.takari:maven:wrapper 을 실행하면 .mvn directory 와 mvnw , mvnw.cmd 을 생성해줍니다.

mvnwmvnw.cmd 은 Maven Wrapper 를 실행시키기 위한 script 파일입니다.

  • mvnw : mvnw 는 Maven 대신에 사용되는 실행 가능한 unix shell script 입니다.
  • mvwn.cmd : mvnw 의 윈도우 배치 버전 shell script 입니다.

.mvn directory 에는 wrapper directory 가 생성되며 그 안에는

MavenWrapperDownloader.java , maven-wrapper.jar , maven-wrapper.properties

으로 총 3개의 파일이 존재합니다.

  • MavenWrapperDownloader.java : java class file 인 이 파일을 compiling 및 실행하여 Maven 가 다운로드 되어집니다.
  • maven-wrapper.jar : wrapper shell scripts 로 부터 maven 을 실행하고, 다운로드 하는데 사용됩니다.
  • maven-wrapper.properties : Maven 이 존재하지 않는 경우 다운로드하기 위한 URL 을 명시하기 위해서 사용됩니다.

이 파일들을 통해서 Maven 이 존재하지 않아도 특정 버전과 classpath 를 가지고 공통된 Maven 을 다운로드 및 사용할 수 있게 됩니다.

 

 

Maven Wrapper 실행하기

추가된 Maven Wrapper 파일들로 해당 Maven 을 빌드 및 실행할 수 있습니다.

  • Maven/target Clean 및 build 
    • ./mvnw clean package
  • Maven 으로 Spring boot 를 백그라운드로 실행
    •  ./mvnw spring-boot:run &
  • mvnw 로 설치된 maven 배포 경로
    • ~/.m2/wrapper/dists

 

 

결론

Maven wrapper 는 어떤 개발환경이나 사용자구애받지 않고 실행 및 배포를 편하게 해줄 수 있는 유용한 파일/기능 입니다.

따라서 유연한 개발/배포를 진행하고자 한다면 꼭 추가해야할 사항입니다.

또한, Gradle 도 이러한 Wrapper 를 구성할 수 있습니다.

대부분 Gradle 을 설치하면 기본적으로 제공되기 때문에 어려움은 없겠지만, 만약 wrapper 가 구성되어있지 않다면 구성하여 더 유연하게 배포/실행하실 수 있습니다.

 

 

REFERNCE

 - https://medium.com/xebia-engineering/a-quick-introduction-to-maven-wrapper-f1d9dbb4ea5e

 

A Quick Introduction to Maven Wrapper

By Deepshikha Sinha and Nishant Madan

medium.com

 - https://ixtears23.github.io/Maven-Wrapper/

 

플러그인 사용해서 maven wrapper 생성

 

ixtears23.github.io

 - https://www.popit.kr/how-to-use-maven-wrapper/

 

Maven Wrapper 소개와 사용 | Popit

Apache Maven은 자바 프로젝트에서는 없어서는 안 될 의존성 관리 도구입니다. 이를 좀 더 쉽게 최신 버전을 유지하기 위해 Maven Wrapper가 나왔는데, Maven Wrapper가 설정된 프로젝트는 Maven 설치 없이도 빌드를 할 수 있다. 본 글에서는 이 Maven Wrapper에 대해서 알아보도록 하겠습니다.

www.popit.kr

 - http://bennet-schulz.com/2018/04/12/quicktip-use-a-maven-wrapper/