Maven 이란?

enoch·2020년 11월 1일
5

Spring Study

목록 보기
3/3
post-thumbnail

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

profile
🍣 초밥을 사랑하는 백엔드 개발자 입니다 :)

0개의 댓글