Maven 이란? - Build Tool + 프로젝트(Package) 관리 Tool
Mojo(마력) = Maven Goals(명령s,작업s)
메이븐은 여러 플러그 인으로 구성되어 있으며, 각각의 플러그인은 하나 이상의 goal(명령,작업)을 포함
Goal은 플러그인과 goal 명칭 조합으로 실행 (<plugin>:<goal>)할 수 있다.
여러 goal을 묶어 라이프사이클 단계(lifecycle phase)를 만들고 실행한다.
lifecycle
메이븐의 동작 방식은 일련의 단계(phase)에 연계된 goal을 실행 하는 것이며, 단계의 집합이 lifecycle이다.
메이븐의 3개의 표준 lifecycle 제공
clean : 빌드 시 생성되었던 산출물을 지운다.
default : 일반적인 빌드 프로세스를 위한 모델이다.
site : 프로젝트 문서와 사이트 작성을 수행한다.
의존성(dependency)
라이브러리 다운 자동화 및 관리 용이성
프로파일(profile)
서로 다른 대상환경( target environment)를 위한 빌드 설정
POM (Project Object Model)
프로젝트 당 하나의 pom.xml을 가진다.
3가지(Group ID, Artifact ID, Version) coordinates를 이용해 자원을 식별한다.
Maven 활용 패턴
Build
소스 코드 컴파일
테스트 코드 컴파일
패키지 새성을 위한 binary 생성
Package
배포 가능한 jar, war, exe 파일 등을 생성
Test
Unit Test등을 실행
빌드 결과 정상적인지 점검
Report
빌드, 패키지, 테스트 결과 정리하고, 빌드 수행 리포트 생성
Release
빌드 후 생성된 artifact를 로컬 혹은 원격 저장소에 저장/배포한다.
설정
기본 local 저장소 변경
"설치경로/conf/settimgs.xml"에 localRepository 항목을 수정하여 변경한다.
Eclipase > Windows > Preferences > Maven > User Settings 에서 수정된 내용이 반영되어 있는지 확인한다.
local 저장소 만들기
POM.xml 의 "dependency" 정의 시 scope 노드와 systemPath 노드를 사용하여 프로젝트에 포함된 jar 파일을 지정하여 줄 수 있다. (문제점 : maven 빌드시 해당 jar파일이 포함되지 않음)
1
2
3
4
5
6
7
<dependency>
<groupId>smack</groupId>
<artifactId>smack-custom</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/smack-custom.jar</systemPath>
</dependency>
POM.xml에 "repository"정의하여 local repository로 활용하는 방법 이때 local repository 폴더는 maven 폴더 구조를 따르도록 구성 해주어야 한다. (폴더구조 : ${project.basedir}/lib/smack/smack-custom/1.0.0/smack-custom-1.0.0.jar)
1
2
3
4
5
6
7
8
9
10
<repository>
<id>in-project</id>
<name>custom jars</name>
<url>file://${project.basedir}/lib</url>
</repository>
<dependency>
<groupId>smack</groupId>
<artifactId>smack-custom</artifactId>
<version>1.0.0</version>
</dependency>