본문 바로가기

Build/Maven

06. Maven phase

 
Maven 에서는 기본 제공되는 phase 혹은 plugin 에서 제공되는 goal 을 실행할 수 있다.
 
그리고 제공되는 각 phase 은 clean, default, site phase 가 있고 각기 다른 라이프사이클을 가진다.
 
실상 phase 는 실행의 주체는 아니며 이 역시도 plugin 의 goal 을 호출하게 되어있다.
 
 
 

clean phase
 
 
clean : 이 페이즈를 실행하면 clean goal 이 실행되어
 
메이븐 빌드를 통해 생성된 모든 산출물을 삭제한다.
 
아래 실행 결과를 보면 maven-clean-plugin 을 호출하여
 
해당 Job 을 수행하는 것을 알 수 있다.
 
C:\Users\dukim\eclipse-workspace\my-app>mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.mycompany.app:my-app >----------------------
[INFO] Building my-app 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ my-app ---
[INFO] Deleting C:\Users\dukim\eclipse-workspace\my-app\target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.071 s
[INFO] Finished at: 2019-06-05T13:44:00+09:00
[INFO] ------------------------------------------------------------------------
 
결과로 output 인 target 폴더가 지워진다.
 
 

site phase
 
 
site : 프로젝트 documents 를 generate 한다. 
이 phase 를 실행하면 site goal 이 실행되는데
site goal 은 pre-site ->site->post-site goal 로 구성되나
통털어 site goal 이라고 보면 된다.
 
site-deploy : generate 된 documents 를 설정되어 있는 서버에 배포하는 역할을 한다. 
실제 해당 phase 을 실행하면 site goal 이 먼저 실행된 다음
site-deploy goal 이 실행되어 서버에 배포된다. 
 
C:\Users\dukim\eclipse-workspace\my-app>mvn site
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.mycompany.app:my-app >----------------------
[INFO] Building my-app 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-site-plugin:3.7.1:site (default-site) @ my-app ---
[INFO] configuring report plugin org.apache.maven.plugins:maven-project-info-reports-plugin:3.0.0
[INFO] 15 reports detected for maven-project-info-reports-plugin:3.0.0: ci-management, dependencies, dependency-info, dependency-management, distribution-management, index, issue-management, licenses,
mailing-lists, modules, plugin-management, plugins, scm, summary, team
[INFO] Rendering site with default locale English (en)
[INFO] Relativizing decoration links with respect to localized project URL: http://maven.apache.org
[INFO] Rendering content with org.apache.maven.skins:maven-default-skin:jar:1.2 skin.
[INFO] Generating "Dependencies" report  --- maven-project-info-reports-plugin:3.0.0:dependencies
[INFO] Generating "Dependency Information" report --- maven-project-info-reports-plugin:3.0.0:dependency-info
[INFO] Generating "About" report         --- maven-project-info-reports-plugin:3.0.0:index
[INFO] Generating "Plugin Management" report --- maven-project-info-reports-plugin:3.0.0:plugin-management
[INFO] Generating "Plugins" report       --- maven-project-info-reports-plugin:3.0.0:plugins
[INFO] Generating "Summary" report       --- maven-project-info-reports-plugin:3.0.0:summary
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.502 s
[INFO] Finished at: 2019-06-05T14:13:03+09:00
[INFO] ------------------------------------------------------------------------
 
결과로 output 폴더인 target 에 site 폴더가 생기며 generate 된 documents 들이 나타난다. 
 
 
index.html 파일을 열어보면 그 결과를 확인할 수 있으며 
 
my-app 에 대한 문서화 주석 결과 및 사용한 dependency 와 plugin 에 대한 정보도 확인할 수 있다.
 
 
 
 

build(default) phase
 
 
 
compile : 소스 코드를 컴파일 한다.
 
test : JUnit , TestNG 같은 단위 테스트 프레임워크로 단위 테스트를 한다.
 
       기본 설정은 단위 테스트가 실패하면 빌드 실패로 간주한다.
 
package : 단위 테스트가 성공하면 pom.xml 의 packaging 엘리먼트 값 ( jar, war, ear 등 ) 에 따라 압축한다.
 
install : 로컬 저장소에 압축한 파일을 배포한다. 로컬 저장소는 개발자 PC 의 저장소를 의미한다.
 
deploy : 원격 저장소에 압축한 파일을 배포한다. 원격 저장소는 외부에 위치한 메이븐 저장소를 위치한다.
 
   
각각 의존관계를 가지고 있기 때문에 package 만 수행해도 compile, test 가 먼저 실행된다.
 
아래와 같이 mvn instll goal 을 실행시키면 
 
compile 하고 test 하고 jar 실행 파일을 만들며 로컬 저장소에 jar 파일을 배포한다.
 
C:\Users\dukim\eclipse-workspace\my-app>mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.mycompany.app:my-app >----------------------
[INFO] Building my-app 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ my-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\dukim\eclipse-workspace\my-app\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ my-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ my-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\dukim\eclipse-workspace\my-app\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ my-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ my-app ---
[INFO] Surefire report directory: C:\Users\dukim\eclipse-workspace\my-app\target\surefire-reports
 
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.mycompany.app.my_app.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
 
Results :
 
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
 
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ my-app ---
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ my-app ---
[INFO] Installing C:\Users\dukim\eclipse-workspace\my-app\target\my-app-0.0.1-SNAPSHOT.jar to C:\Users\dukim\.m2\repository\com\mycompany\app\my-app\0.0.1-SNAPSHOT\my-app-0.0.1-SNAPSHOT.jar
[INFO] Installing C:\Users\dukim\eclipse-workspace\my-app\pom.xml to C:\Users\dukim\.m2\repository\com\mycompany\app\my-app\0.0.1-SNAPSHOT\my-app-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.276 s
[INFO] Finished at: 2019-06-05T14:26:48+09:00
[INFO] ------------------------------------------------------------------------
 
 
 
 
 

'Build > Maven' 카테고리의 다른 글

08. Maven Repository  (0) 2020.01.23
07. Maven plugin  (0) 2020.01.23
05. Maven POM.xml  (0) 2020.01.23
04. Maven 기본 명령어  (0) 2020.01.23
03. Maven 템플릿  (0) 2020.01.23