1. Maven 이란?

Yoon·2022년 1월 22일
0

Spring

목록 보기
1/2

Maven 이란?

  • Maven은 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어 졌다.
  • Maven은 Ant와 마찬가지로 프로젝트의 전체적인 라이프 사이클을 관리하는 도구 이며,
    많은 편리함과 이점이 있어 널리 사용되고 있다.
  • Maven은 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 준다.
  • Maven은 중앙 저장소를 통한 자동 의존성 관리를 중앙 저장소(아파치재단에서 운영 관리)는 라이브러리를 공유하는 파일 서버라고 볼 수 있고, 메이븐은 자기 회사만의 중앙 저장소를 구축할 수 도있다.
  • 간단한 설정을 통한 배포 관리가 가능 하다.

Ant vs Maven

  1. Ant는 비교적 자유도가 높은 편
    (Ant : 전처리/컴파일/패키징/테스팅/배포 가능)
  2. Maven은 정해진 라이프사이클에 의하여 작업 수행하며, 전반적인 프로젝트 관리 기능까지 포함.
    (Bulid Tool + Project Management)

Maven LifeCycle

  1. LifeCycle
  • 미리 정해진 빌드 순서
  • 메이븐은 프레임워크이기 때문에 동작 방식이 정해져있고, 미리 정의하고 있는 빌드 순서가 있다.
    이를 라이프사이클(LifeCycle)이라 한다.

@ Default(Build) : 일반적인 빌드 프로세스를 위한 모델이다.
@ Clean : 빌드 시 생성되었던 파일들을 삭제하는 단계
@ Validate : 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인하는 단계
@ Compile : 프로젝트의 소스코드를 컴파일 하는 단계
@ Test : 유닛(단위) 테스트를 수행하는 단계 (테스트 실패시 빌드 실패로 처리, 스킵 가능)
@ Pacakge : 실제 컴파일된 소스 코드와 리소스들을 jar, war 등등의 파일 등의 배포를 위한 패키지로 만드는 단계
@ Verify : 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인하는 단계
@ Install : 패키지를 로컬 저장소에 설치하는 단계
@ Site : 프로젝트 문서와 사이트 작성, 생성하는 단계
@ Deploy : 만들어진 package를 원격 저장소에 release 하는 단계

최종 빌드 순서

compile -> test -> package
① compile : src/main/java 디렉토리 아래의 모든 소스 코드가 컴파일 된다.
② test : src/test/java, src/test/resources 테스트 자원 복사 및 테스트 소스 코드 컴파일 된다.
③ packaging : 컴파일과 테스트가 완료 된 후, jar, war 같은 형태로 압축하는 작업

Phase(단계)

Bulid Lifecycle의 각각의 단계를 Phase라고 한다.
Phase는 의존관계를 가지고 있어 해당 Phase가 수행되려면 이전 단계의 Phase가 모두 수행되어야 한다.
즉, 모든 빌드단계는 이전 단계가 성공적으로 실행되었을 때 실행된다는 것이 Dependency 입니다.

Gaol
  • 특정 작업, 최소한의 실행 단위(task).
  • 하나의 플러그인에서는 여러 작업을 수행할 수 있도록 지원하며, 플러그인에서 실행할 수 있는 각각의 기능(명령)을 Gaol이라고 한다.
    (각각의 Phase에 연계된 Gaol을 실행하는 과정을 Bulid라고 한다.)
  • 플러그인의 goal을 실행하는 방법은 다음과 같다.
    ■ - mvn groupId:artifactId:version:goal(아래와 같이 생략 가능)
    ■ - mvn plugin:goal

Maven 설정파일

1) setting.xml

  • 메이븐 빌드 툴과 관련한 설정 파일
  • MAVEN_HOME/conf 디렉토리에 위치(메이븐 설치 시 기본 제공)
  • settings.xml의 설정

** 메이븐을 빌드할 때 의존 관계에 있는 라이브러리, 플러그인을 중앙 저장소에서 개발자 PC로 다운로드 하는 위치(로컬저장소)의 기본 설정'USER_HOME/.m2/repository' 인데 settings.xml의 에 원하는 로컬 저장소의 경로를 지정, 변경할 수 있다.

POM(프로젝트 객체 모델(Project Object Model))

  • POM은 pom.xml 파일을 말하며 pom.xml은 메이븐을 이용하는 프로젝트의 root에 존재하는 xml 파일이다.
    (하나의 자바 프로젝트에 빌드 툴을 maven으로 설정하면, 프로젝트 최상위 디렉토리에 "pom.xml" 이라는 파일이 생성된다.)
  • Maven의 기능을 이용하기 위해서 POM이 사용된다.
  • 파일은 프로젝트마다 1개이며, pom.xml만 보면 프로젝트의 모든 설정, 의존성 등을 알 수 있다.
profile
나의 공부 일기

0개의 댓글