Maven 개요
- 개요
- Java프로젝트에서 참조 라이브러리(jar등)의 의존성 관리와 빌드배포를 수행 기능 제공
- 필요한 library를 지정된 repository에서 내 프로젝트로 갖고옴.
- 빌드와 의존성관리를 위해 pom.xml에 관련 환경들을 설정
- Maven의 개념 설명
- Eclipse에서 Maven기반 웹프로젝트 생성하기 (눈 딱감고 닥치고 따라해보기)
- Maven의 여러기능 소개
의존성 관리
- 개념
- dependency의 scope이 있음(compile, runtime, provide 등등)
- 중앙(http://search.maven.org)-원격-로컬리파지토리
- 의존성 전이 A1–>B1–>C1, A1–>C2 (위 Mavne의 여러기능 소개 항목 참조)
- 내려받을 때 소스코드도 내려받을 수 있음(옵션)
빌드관리
- 개념
- 3개의 라이프싸이클(clean, build, site)별로 각각 phase를 갖고 있음. 각 phase에는 plugin들의 goal이 매핑됨.
- http://wiki.gurubee.net/display/SWDEV/Maven+Lifecycle
- 각 phase는 의존성이 있어서 특정 phase를 실행하면 의존성 있는 phase들도 같이 수행됨.
- 빌드 수행은 plugin들이 수행함. Ant의 task처럼 goal을 지정하여 수행( phase와 달리 플러그인의 goal을 지정하여 해당 goal만 실행할 수 있음)
- mvn <플러그인명>:<플러그인골> (위 Mavne의 여러기능 소개 항목 참조)
플러그인 구성하기
- Maven의 플러그인 옵션을 잘 구성해야 복잡한 빌드를 좀더 자세하게 통제할 수 있다.
프로젝트 관계 설정
하나의 프로젝트에서 여러 모듈을 관리할 수 있다.
부모 pom.xml, 자식 pom.xml들(자식은 부모의 정보를 기록)
빌드환경구성
Profile을 이용하여 별도의 DEV, OPER별로 별도의 환경구성을 할 수 있다.
(대부분의 site에서는 환경변수만 얘기하고 있는데, dependcy등 많은 부분을 별도 지정할 수 있다.)
기타
- custom jar를 repository에 관리하기
- 환경(DEV,STG,PRD)별로 다르게 빌드하기
- tomcat maven 플러그인( 스토브 훌로구 :: 이클립스 상에서 maven 을 이용해 원격서버로 배포하기
- maven으로 runnable jar만들기 http://stove99.tistory.com/79
- 까먹지말자! : Maven을 넘어 Gradle로 가자.
주요 참고 사이트
- Maven 홈페이지
SonaType에서 만든 Maven Ebook
그 Ebooke을 번역한 블로그
Maven 중앙 리파지토리
플러그인 정보(사용법, 옵션) 검색