[IT][Maven의 골과 페이즈]
[Maven의 골과 페이즈]
메이븐의 골(Goal)과 페이즈(Phase)를 알아보자.
골 - 작업의 단위
페이즈 - 골들을 모아서 페이즈로 만들고 순차적으로 내부 페이즈부터 자동 실행함
// 실행방법
mvn 페이즈 <- 내부 페이즈부터 실행됨
mvn 페이즈:골 <- 해당 골만 실행됨
ex)
mvn compile
mvn surefire:test
mvn test
mvn package
mvn jar:jar
// 내부 페이즈부터 자동실행
compile -> test -> package
ex)
mvn package : compile -> test -> package
mvn test : compile -> test
// Packing을 위한 페이즈(Phase) -- {골(Goal)}
process-resources {resources:resources}
compile {compiler:compile}
process-test-resources {resources:testResources}
test-compile {compiler:testCompile}
test {surefire:test}
package {jar:jar} {ejb:ejb or ejb3:ejb3 or jar:jar or par:par or rar:rar or war:war}
install {install:install}
deploy {deploy:deploy}
// 패키징(부가설명)
빌드를 수행할 때 POM의 <packaging> 설정에 따라 빌드를 수행하는데,
가령 jar 패키징으로 설정되어 있다면 아래와 같은 goal들을 수행하게 된다.
1. process-resources: 설정에 따라 리소스 파일들을 복사한다.
2. compile: 컴파일을 수행한다.
3. process-test-resources: 테스트용 리소스 파일들을 복사한다.
4. test-compile: 테스트 코드들을 컴파일한다.
5. test: 테스트를 실행한다.
6. package: JAR 파일로 묶는다.
7. install: 로컬 저장소에 복사한다.
8. deploy: 원격 저장소에 복사한다.
deploy를 수행하면 그 이전의 모든 goal들이 실행된다.
// 필수 페이즈
mvn clean : target폴더의 빌드파일들을 모두 삭제한다
mvn compile : 소스를 컴파일 한다
mvn pakage : 컴파일된 소스를 가져다 jar같은 배포 포맷으로 패키징한다
mvn install : 의존성 관련 파일을 로컬 저장소에 패키징한다
mvn deploy : 최종 패키지를 공유하기 위해 원격 저장소에 카피한다
mvn site : 프로젝트 문서를 생성한다
참고
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html