 |
|
메이븐 2 생명주기, 단계, 플러그인, 모조
메이븐은 대부분의 빌드 작업을 할 때 플러그인을 활용한다. 메이븐 엔진이 플러그인들의 행위를 지휘한다고 생각해도 된다.
플러그인의 모조
플러그인이란 메이븐의 플러그인 프레임워크에 적합하도록 작성된 소프트웨어 모듈이다. 현재 커스텀 플러그인을 자바, Ant 또는 빈셸(Beanshell) 등을 사용하여 만들 수 있다. 각각의 플러그인의 작업을 모조라고 부른다. 일부에서는 플러그인을 연관된 모조들의 집합으로 보기도 한다. 커스텀 메이븐 2 플러그인을 작성하는 방법은 본 튜토리얼의 범위를 벗어난다. 이와 관련된 더 많은 정보를 원한다면 참고자료를 보기 바란다.
메이븐 2는 자주 사용하는 플러그인들을 미리 다운로드하여 사용할 수 있도록 패키징 한 상태로 배포했다. 대부분의 개발 작업에서는 추가 플러그인 사용이 필요가 거의 없다.
플러그인을 만들기 전에 반드시 웹 사이트(참고자료를 보기 바란다)에서 메이븐 2 플러그인 리스트에서 이미 만들어져 있는 것이 없는지 찾아 보길 권장한다. 그림 5는 여러 가용한 플러그인들에 대한 정보를 제공하는 메이븐 플러그인 매트릭스(참고자료를 보기 바란다)를 보여준다.
그림 5. 메이븐 플러그인 매트릭스
모조를 생명주기 단계에 바인딩하기
플러그인을 사용한 모조(빌드 작업)는 메이븐 엔진이 빌드 생명주기에서 해당 단계를 실행할 때 수행된다. 플러그인의 모조와 생명주기의 특정 단계와의 연관을 바인딩(binding)이라고 한다. 플러그인 개발자들은 마음대로 한 개 이상의 생명주기 단계를 플러그인과 연관시킬 수 있다.
기본 생명주기 단계
메이븐에 내장된 빌드 생명주기 이해는 여러 구별된 단계로 구성되어 있다. 표 1은 각 단계에 대한 간략한 소개를 제공한다.
표 1. 메이븐 2 기본 생명주기 단계
| 생명주기 단계 | 설명 |
|---|
| validate | 현재 설정과 POM의 내용이 유효한지 확인한다. 이 과정은 pom.xml 파일 트리 구조를 검증한다. | | initialize | 빌드 사이클에서 수행할 주요 작업 이전에 초기화를 할 수 있는 순간 | | generate-sources | 코드 생성기가 이 다음의 단계들에서 컴파일 되고 처리할 소스 코드를 생성하기 시작하는 순간 | | process-sources | 소스의 파싱, 수정, 변경을 제공한다. 일반 코드 또는 생성된 코드 모두 여기서 처리된다. | | generate-resources | 소스 코드가 아닌 리소스를 생성하는 단계. 보통 메타데이터 파일과 설정 파일을 포함한다. | | process-resources | 이전 과정의 '소스 코드가 아닌 리소스' 파일들을 다룬다. 이 단계에서 리소스 파일들이 수정, 변경 재배치된다. | | compile | 소스 코드를 컴파일한다. 컴파일된 클래스들은 타깃 디렉터리 트리 구조에 저장된다. | | process-classes | 클래스 파일 변환과 개선 단계를 다룬다. 바이트코드 위버(weaver)와 instrument 도구가 동작하는 단계다. | | generate-test-sources | 단위 테스트 코드를 생성하는 모조가 동작하는 순간 | | process-test-sources | 컴파일하기 전에 테스트 소스 코드에 필요한 작업을 수행한다. 이 단계에서 소스 코드는 수정, 변환 또는 복사될 수 있다. | | generate-test-resources | 테스트 관련 리소스 생성을 허용한다. | | process-test-resources | 테스트 관련 리소스의 처리, 변환, 재배치가 가능하다. | | test-compile | 단위 테스트 소스 코드를 컴파일한다. | | test | 컴파일된 단위 테스트를 실행하고 그 결과를 표시한다. | | package | 실행 가능한 바이너리 파일들을 JAR나 WAR 같은 배포용 압축 파일로 묶는다. | | pre-integration-test | 통합 테스트를 준비한다. 이 경우 통합 테스트는 실제 배치 환경의 코드를 테스트하는 것을 말한다. 이 단계에서 위에서 묶은 압축 파일을 서버에 배치할 수 있다. | | integration-test | 실제 통합 테스트를 수행한다. | | post-integration-test | 통합 테스트 준비 상태를 해제한다. 이것은 테스트 환경의 리셋 또는 재초기화 과정을 포함할 수 있다. | | verify | 배치 가능한 압축 파일의 무결성과 유효성을 검증한다. 이 과정 이후에 압축 파일들이 설치된다. | | install | 압축 파일을 로컬 메이븐 디렉터리에 추가한다. 이로 인해 이것에 의존하는 다른 모듈들을 사용할 수 있게 된다. | | deploy | 압축 파일을 원격 메이븐 디렉터리에 추가한다. 더 많은 사용자들이 이 artifact를 사용할 수 있게 된다. |
메이븐은 오픈소스 커뮤니티로부터 얻은 10년 이상의 프로젝트 빌드 관리 경험을 반영하고 있다. 따라서 표 1에 나와있는 생명주기에 해당하지 않는 빌드 생명주기를 쓰는 소프트웨어 프로젝트를 거의 찾을 수 없을 것이다.
메이븐 2 엔진을 시작하면 표 1에 있는 각각의 단계를 진행하고 각 단계에 관련되어 있는 모조들을 실행한다. 각각의 모조는 각각의 작업을 수행하면서 메이븐 2의 멋진 POM 지원, 종속성 관리 기능을 사용하고 빌드 상태 정보에 접근할 수 있다.
메이븐 2 엔진을 호출할 때, 하나의 생명주기 단계를 커맨드 라인 인자로 지정할 수 있다. 엔진은 모든 단계를 거쳐 지정한 단계까지 수행하게 된다. 그 과정에서 관련된 모조들을 전부 실행한다.
이것이 간략한 메이븐 2 동작 원리다. 이것이 동작하는 것은 다음 절에서 살펴보겠다. 종속성 관리 모델과 그것의 POM과 같은 메이븐의 동작 원리를 이해해야 메이븐 2를 실제 바로 사용할 수 있을 것이다.
|