Maven 이란?

· 유창연 · 5 min read

자바 프로젝트 관리 도구 Maven의 개념과 빌드 라이프사이클, POM 설정 방법을 알아봅니다.

자바 프로젝트 관리 도구 Maven의 개념과 빌드 라이프사이클, POM 설정 방법을 알아봅니다.

Maven 이란?

Maven이란 자바용 프로젝트 관리 도구이다.

빌드란?

프로젝트를 위해 작성한 Java코드나 여러 자원들(.xml, .jar, .properties)를 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이다. 또 단순히 컴파일해주는 작업 뿐만 아니라, 테스팅, 검사, 배포까지 일련의 작업들을 통틀어 빌드라고 한다.

Maven

공식 사이트 : Apache Maven Project

Maven은 Apache사에서 만든 빌드툴(build tool)이다. pom.xml파일을 통해 정형화된 빌드 시스템으로 프로젝트 관리를 해준다. 프로젝트의 전체적인 라이프 사이클을 관리한다.

특징

  • 빌드 과정을 쉽게 만들기
  • 정형화된 빌드 시스템 제공
  • Maven은 POM과 플러그인 세트를 사용하여 프로젝트를 빌드한다.
  • 양질의 프로젝트 정보 제공
  • 더 나은 개발

장점

  • 편리한 의존성 라이브러리 관리
  • 정해진 빌드 방법을 사용하여 협업에서 유리하게 작용
  • 다양한 플러그인을 통해 많은 작업이 자동화됨

플러그인을 구동해주는 프레임워크로, 모든 작업은 플로그인에서 수행하게된다.

Maven LifeCycle

메이븐은 정해진 라이프 사이클을 통해 프로젝트를 빌드한다. 메이븐 라이프 사이클의 종류는 기본, clean, site가 있다. 각 라이프 사이클 안에는 더 작은 단위의 빌드 단계가 정의되어 있는데 이를 phase라고 한다.

phase는 논리적인 빌드 단계이고, 실제로는 phase에 연결된 plug-in있고 plug-in이 수행하는 명령을 goal이라고 한다.

라이프 사이클의 세부 순서와 설명은 이 블로그 를 참조하면 좋다.

요약하자면 빌드 순서는 Compile - Test - Package 이다. Clean -> init -> compile -> test-compile -> test -> package -> integration-test -> verify -> install -> deploy -> site

Maven 설정 파일

settings.xml

  • 메이븐 빌드 툴과 관련된 설정파일
  • Maven_HOME/conf에 위치

POM

프로젝트마다 하나의 pom.xml파일이 있다. 프로젝트의 모든 설정, 의존성 등을 설정할 수 있다. pom.xml의 엘리트먼트에 대한 설명은 이 블로그를 참고하면 좋다.

pom.xml 엘리트먼트

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>kr.or.connect</groupId>
    <artifactId>examples</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>mysample</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
  • project : pom.xml 파일의 최상위 루트 엘리먼트(Root Element)입니다.
  • modelVersion : POM model의 버전입니다.
  • groupId : 프로젝트를 생성하는 조직의 고유 아이디를 결정합니다. 일반적으로 도메인 이름을 거꾸로 적습니다.
  • artifactId : 해당 프로젝트에 의하여 생성되는 artifact의 고유 아이디를 결정합니다. Maven을 이용하여 pom.xml을 빌드할 경우 다음과 같은 규칙으로 artifact가 생성됩니다. artifactid-version.packaging. 위 예의 경우 빌드할 경우 examples-1.0-SNAPSHOT.jar 파일이 생성됩니다.
  • packaging : 해당 프로젝트를 어떤 형태로 packaging 할 것인지 결정합니다. jar, war, ear 등이 해당됩니다. version : 프로젝트의 현재 버전. 추후 살펴보겠지만 프로젝트가 개발 중일 때는 SNAPSHOT을 접미사로 사용합니다. Maven의 버전 관리 기능은 라이브러리 관리를 편하게 합니다.
  • name : 프로젝트의 이름입니다.
  • url : 프로젝트 사이트가 있다면 사이트 URL을 등록하는 것이 가능합니다.

해당 엘리먼트 안에 필요한 라이브러리를 지정하게 됩니다.

자료 출처

https://www.edwith.org/boostcourse-web-be/lecture/58937/ https://goddaehee.tistory.com/199 https://taes-k.github.io/2019/05/31/spring-build-tools/ https://maven.apache.org/what-is-maven.html https://sjh836.tistory.com/131

공유:

댓글

Back to Blog

관련 게시글

View All Posts »