[Maven] maven wrapper란?

[Maven] maven wrapper란?


  • Apache Maven은 자바 프로젝트에서는 없어서는 안 될 의존성 관리 도구
  • 이를 좀 더 쉽게 최신 버전을 유지하기 위해 Maven wrapper가 나옴
  • Maven wrapper가 설정된 프로젝트는 Maven 설치 없이도 빌드 가능

Maven Wrapper

  • Apache Maven을 프로젝트에서 요구하는 버전으로 유지하기 위해 사용하는 도구
  • 만약 로컬 시스템에 mvn이 설치되어 있지 않거나 혹은, mvn 버전이 2.x대의 낮은 버전이라면, maven을 설치하는 것도 프로젝트를 설정하는데 번거로운 작업일 것

실행하기

  • 일반적으로 Maven은 다음과 같은 명령으로 실행 함
mvn clean package
  • 하지만, mvnw가 설정된 프로젝트의 경우 다음과 같은 명령어로 실행한다.
    • 만약 mvnw에 실행 권한이 없다면 실행 권한을 추가해야 한다
      •  chmod  +x mvnw
./mvnw clean package
  • 또는 윈도우에서는 다음과 같은 명령어로 실행한다.
mvnw.cmd clean install
  • 사용되는 maven의 버전은 .mvn/wrapper/maven-wrapper.proeprties 파일에 distributionUrl  속성에 정의된다.
  • 프로젝트 최상단 디렉토리에 mvnw, mvnw.cmd와  .mvn 디렉토리가 있다면, mvnw가 설정되어 있는 프로젝트이다.


프로젝트에 mvnw 초기 구성

  • 그렇다면, mvnew가 구성되지 않은 프로젝트의 경우에는 어떻게 구상해야 할까?
  • 우선 mvn 명령어가 동작하게 maven 환경을 구성해야 함
  • maven 구성 방법은 Apache Maven 사이트에서 직접 내려 받는 방법 등 여러가지가 있다
  • maven환경이 설정되었으면, 다음의 명령어를 실행 할 수 있다.
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
  • 만약 -Dmaven 버전을 명시하지 않으면, 실행 시점에 maven 최신 버전이 mvnw 설정되며, 이후 maven이 설치되어 있지 않은 개발자는 mvnw만으로도 maven이 설치되면서 빌드를 할 수 있다.
  • 이렇게 실행하면 위에 설명한 mvnw, mvn.cmd 그리고 .mvn디렉토리가 생성된다.
  • mvnw로 설치된 maven 배포판은 어디에 설치되어 있을까?
    • (사용자홈)/.m2/wrapper/dists 디렉토리에 설치된다
combine@localhost:~$ ls ~/.m2/wrapper/dists/
apache-maven-3.3.9-bin


결론

  • 복잡해지는 빌드 환경을 Maven Wrapper를 이용해 해결할 수 있다
  • Maven Wrapper는 Spring, Presto 등 유명 프로젝트에서도 활발히 사용 중이다.

출처

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[컴퓨터네트워크] BCD코드, EBCDIC코드, ASCll코드

[Maven] package와 install의 차이