메이븐(maven) 이란?
Maven은 자바 프로젝트의 빌드(build)를 자동화 해주는 빌드 툴(build tool)
자바 소스를 compile하고 package해서 deploy하는 일을 자동화 해주는 것이다.
- 특징
- 빌드절차 간소화
- 동일 빌드 제공
- 프로젝트 정보 제공
-
다른 빌드와 차이점
- ant와의 차이점 Ant가 비교적 자유도가 높다. 전처리, 컴파일, 패키징, 테스팅, 배포 가능
Maven은 정해진 라이프사이클에 의하여 작업 수행하며, 전반적인 프로젝트 관리 기능까지 포함하고 있음. (Build Tool + Project Management)
- gradle과의 차이점
XML 대신 groovy 스크립트를 사용하여 동적인 빌드 가능.
maven은 멀티프로젝트에서 상속구조인데, gradle은 주입 방식이다. 멀티프로젝트에서 gradle이 더 적합
xml
-
setting.xml - maven 세팅에 관련된 xml
-
pom.xml
하나의 자바 프로젝트에 빌드 툴로 maven을 설정했다면, 프로젝트 최상위 디렉토리에 “pom.xml”이라는 파일이 생성된다.
pom.xml은 POM(Project Object Model)을 설정하는 부분으로 프로젝트 내 빌드 옵션을 설정한다.
- xml 구성
- 프로젝트 정보
- 의존성 라이브러리 정보 (dependency)
- 빌드 정보 (plugin)
Maven의 장점
- 핵심 라이브러리(JAR)와 의존 라이브러리의 관리가 편리하다.
- 모든 소프트웨어 프로젝트에 정형화(표준화)된 디렉터리 구조와 빌드 프로세스를 유지한다.
- Maven의 다양한 플러그인을 활용 가능하다.
- 라이프 사이클
- clean : 빌드 시 생성되었던 산출물을 삭제
- pre-clean : clean 작업 전에 사전작업
- clean : 이전 빌드에서 생성된 모든 파일 삭제
- post-clean : 사후작업
- default : 프로젝트 배포절차, 패키지 타입별로 다르게 정의됌
- validate : 프로젝트 상태 점검, 빌드에 필요한 정보 존재유무 체크
- initialize : 빌드 상태를 초기화, 속성 설정, 작업 디렉터리 생성
- generate-sources : 컴파일에 필요한 소스 생성
- process-sources : 소스코드를 처리
- generate-resources : 패키지에 포함될 자원 생성
- compile : 프로젝트의 소스코드를 컴파일
- process-classes : 컴파일 후 후처리
- generate-test-source : 테스트를 위한 소스 코드를 생성
- process-test-source : 테스트 소스코드를 처리
- generate-test-resources : 테스팅을 위한 자원 생성
- process-test-resources : 테스트 대상 디렉터리에 자원을 복사하고 가공
- test-compile : 테스트 코드를 컴파일
- process-test-classes : 컴파일 후 후처리
- test : 단위 테스트 프레임워크를 이용해 테스트 수행
- prepare-package : 패키지 생성 전 사전작업
- package : 개발자가 선택한 war, jar 등의 패키징 수행
- pre-integration-test : 통합테스팅 전 사전작업
- integration-test : 통합테스트
- post-integration : 통합테스팅 후 사후작업
- verify : 패키지가 품질 기준에 적합한지 검사
- install : 패키지를 로컬 저장소에 설치
- deploy : 패키지를 원격 저장소에 배포
- site : 프로젝트 문서화 절차
- pre-site : 사전작업
- site : 사이트문서 생성
- post-site : 사후작업 및 배포 전 사전작업
- site-deploy : 생성된 문서를 웹 서버에 배포