메이븐의 정의, 구조, 특징등을 정리하였다.
1. 메이븐이란?
- 아파치 메이븐은 자바용 프로젝트 관리 도구 이다.- 아파치 앤트의 대안으로 만들어졌다.
1) 특징
- 빌드 절차 간소화
- 동일한 빌드 시스템 제공
- 프로젝트 정보 제공
2). 메이븐 디렉터리 구조
<출처 : 위키백과>
3) ANT와의 차이점
- ANT는 사용자가 일일이 파일 구조를 만들아여한다. ANT가 자유도가 높다.- 메이븐은 정해진 라이프 사이클에 작업을 수행하고, 전반적 프로젝트 관리 기능을 포함한다. (Build Tool + Project Manager)
4) grale과 차이점
- XML 대신 groovy 스크립트를 사용해 동적인 빌드를 한다.
- Maven은 멀티프로젝트에서 상속 구조이고, gradle은 주입방식이다.
2. 플러그인
- 메이븐은 플러그인을 구동해주는 프레임 워크이다. 작업은 플러그인에서 수행한다.
- 메이븐은 여러 플러그인으로 구성되 있고, 각각 플러그인은 하나 이상의 Goal(명령, 작업)을 포함한다.
cf) Goal이란? 메이븐의 실행단위 이다.
- 플러그인과 골의 조합으로 실행한다.
ex) mvn <plugin>:
<goal> = mvn archetype:generate
3. 라이프사이클
- 프로젝트 생성에 필요한 단계(phases)들을 Build Lifecycle이라 정의하고, default, clean, site 세 가지로 정의한다. cf) phase : 실행단위로 goal과 바인딩 됨.
1) Clean
- 빌드 시 생성되었던 산출물들을 삭제한다.
- pre-clean : clean 작업 전에 사전 작업진행
- clean : 이전 빌드에서 생성된 모든 파일 삭제
- post-clean : 사후 작업
2) default
- 프로젝트 배포절차, 패키지 타입별 다르게 정의된다.
- validate : 프로젝트 상태점검, 빌드에 필요한 정보 존재유무 체크
- initialize : 빌드 상태 초기화, 속성 설정, 프로젝트 디렉터리 생성
- generate-sources : 소스코드를 처리
- generate-resources : 패키지에 포함 될 자원 생성
- compile : 프로젝트의 소스코드를 컴파일
- process-classes : 컴파일 후 후처리
- pakage : 개발자가 선택한 jar, war 등 패키징 수행
- 기타..
3) site
- pre-site : 사전작업
- site : 사이트 문서 생성
- post-site : 사후작업 및 배포 전 사전 작업
- site-deploy : 생성된 문서를 웹 서버에 배포
4. 의존성
pom.xml에 프로젝트에 사용할 라이브러리를 dependency로 정의 해 두면, 메이븐은 이를 자동으로 추가해 준다. library까지 모두 추가 해 준다. 이를 '의존성 전이' 라고 한다.
5. profile
Maven은 서로 다른 환경에 따라 다른 설정을 각각 관리할 수 있는 profile 기능을 제공.
6. pom.xml
- 프로젝트 root에 있는 xml파일. Project Object Model을 뜻한다.
- 프로젝트당 1개가 있다.
- 프로젝트의 모든 설정, 의존성 들을 알 수 있다.
- goupId : 프로젝틑 패키지 명칭
- artifactId : artifact 이름, gourpid내에서 유일해야 함.
- version : artifact의 현재 버전
- name : 어플리케이션 이름
- packaging : 패키지 유형 (jar, war ...)
- distributeionManagement : artifact가 배포될 저장소 정보와 설정
- parent : 프로젝트 계층 정보
- name : 어플리케이션 이름
- packaging : 패키지 유형 (jar, war ...)
- distributeionManagement : artifact가 배포될 저장소 정보와 설정
- parent : 프로젝트 계층 정보
댓글
댓글 쓰기