2013년 8월 8일 목요일

Maven POM설정 파일 및 저장소, 생명주기

Maven이 제공하는 기능
Builds
Documentation
Reporting
Dependencies – 의존관계 관리, 프로젝트나 모듈간 의존성관리 가능
SCMs – 소스코드 관리
Releases
Distribution

POM 설정파일
프로젝트와 관련된 정보를 Project Object Model (이하 POM)이라는 이름으로 정의하고 있으며, POM의 이름을 따서 기본 설정 파일은 "pom.xml" 파일이다.
프로젝트 기본 정보
프로젝트 이름, URL, 개발자, 라이선스 등등
빌드 설정
기본 빌드 설정을 변경하기 위한 카테고리 (소스, 리소스 디렉토리 변경, 플러그인 설정 변경 및 플러그인 추가)
프로젝트 관계 설정
각 프로젝트간의 관계 관리 혹은 모듈간의 의존성 관리
빌드 환경
다양한 환경에 따라 달라지는 설정 정보를 관리 (프로파일 기능)
속성 정보 관리
pom/project 속성, settings 속성, 시스템 환경 변수 속성, 자바 시스템 속성 등을 정의 또는 사용할 수 있다.
메이븐은 기본적인 프로젝트 디렉토리 구조와 플러그인 정보를 포함하고 있는 POM설정파일을 제공하며 모든 POM 설정 파일은 해당 설정파일을 상속한다.

Maven 저장소
중앙 저장소
오픈 소스 라이브러리, 메이븐 플러그인, 메이븐 아키 타입을 관리하는 저장소
원격 저장소
중앙 저장소에 없는 라이브러리를 한 곳에 모아두기 위하여 별도의 메이븐 저장소를 설치 해 관리
사내 원격 저장소나 외부에 위치하는 외부(공개) 원격 저장소 등등
로컬 저장소
메이븐을 빌드할 때 다운로드하는 라이브러리, 플러그인을 관리하는 개발자 PC의 저장소
기본 로컬 저장소는 USER_HOME/.m2/repository

프로파일 기능
메이븐은 환경에 따라 달라지는 설정을 각각 다르게 관리할 수 있는 프로파일 기능을 제공한다.
프로파일은 <profiles>/<profile> 엘리먼트를 사용하여 설정할 수 있다.
<project> 루트 엘리먼트가 가질 수 있는 모든 엘리먼트를 설정할 수 있다.

메이븐 모듈
메이븐은 하나의 프로젝트에서 여러 모듈을 관리할 수 있는 기능을 지원한다.
일반적으로 서비스를 개발하게 되면 관리자 페이지와  고객의 서비스 제공을 위한
  Web Module이 분리가 되고, 두 개의 모듈이 핵심 비지니스 로직을 공유하게 된다.
  이런 경우 메이븐의 모듈 기능을 이용하면 유용하다.
메이븐의 모듈 개념을 이해하고 활용하려면 상속, 집합, 의존 관계 개념을 이해해야 한다.
프로젝트에서 공통으로 사용하는 설정은 공통 POM 파일을 만들어 관리하고
  하위 모듈에서 이 POM파일을 상속할 수 있다

생명주기
1. Life Cycle
페이즈 
 의존관계
 compile

 test
compile -> test 
 package
test -> package
 install

 deploy


2. Clean Life Cycle
  clean : 메이븐 빌드를 통하여 생성된 모든 산출물을 삭제 (target 디렉토리 삭제)

3. Site Life Cycle
페이즈 
 설명
 site
target/site 디렉토리에 문서 사이트 생성
 site-deploy
생성한 문서 사이트를 설정되어 있는 서버에 배포

 Maven 플러그인
메이븐에서 제공하는 모든 기능은 플러그인 기반으로 동작한다.
메이븐 라이프사이클에 포함되어 있는 페이즈 또한 플러그인을 통하여
  실직적인 작업이 실행된다.
<bild>/<plugins>/<plugin> 엘리먼트를 사용하여 원하는 플러그인을
  추가 및 설정 할 수 있다.
하나의 플러그인에서 여러 작업을 수행할 수 있고, 실행할 수 있는
  각각의 작업을 goal 이라고 정의한다.

페이즈와 플러그인 관계
페이즈의 작업은 메이븐에서 기본으로 포함하고 있는
  각 플러그인의 골을 이용해서 수행한다

댓글 없음:

댓글 쓰기