[Maven] Lifecycle?? 라이프 사이클??

[Maven] Lifecycle



  • Maven에서는 clean, build, site의 세가지 Lifecycle을 제공
  • compile, test, package, deploy등의 과정은 build Lifecycle에 속한다.
  • Maven은 모든 빌드 단위에 대한  Lifecycle이 예약되어 있어서 개발자가 임의로 변경 할 수 없다.
  • 각 LifeCycle은 순서를 갖는 단계(phase)로 구성된다.
    • clean : 빌드 시 생성되었던 산출물을 삭제
      • target폴더 자체가 사라짐
    • default : 프로젝트 배포절차, 패키지 타입별로 다르게 정의됨
    • site : 프로젝트 문서화 절차


Phase

  • Phase는 Build Lifecycle의 각각의 단계를 의미 
  • Phase는 특정 순서에 따라서 goal이 실행되도록 구조를 제공 함.
  • Phase간에는 의존 관계가 있다.
    • ex) package phase가 수행되기 위해서는 이전 phase가 순서대로 수행된 다음에 수행


Phase와 Goal의 관계


  • Maven에서 제공하는 모든 기능은 플러그인 기반으로 동작한다.
  • Maven에서 기본으로 제공하는 Phase를 실행하면 해당 Phase와 연결된 플러그인의Goal이 실행된다.
  • Plugin Goal
    • Maven에서 플러그인을 실행할 때 '플러그인 이름: 플러그인 지원 골'형식으로 실행할 기능을 선택 할 수 있음
    • ex) mvn compiler:compile은 'compiler'플러그인에서 'compile'기능(goal)을 실행

Maven 디폴트 Phase와 Goal

여러가지만 있지만 몇가지만 정리합니다..
  • package
    • package를 실행하면 compile, test-compile, test순으로 실행된 다음 jar, war파일이 target 디렉토리에 생성됨
  • install
    • 로컬 repo에 패키지를 배포
    • Maven install Plugin
  • deploy
    • 원격 repo에 등록하며, 다른 프로젝트에서 사용 할 수 있도록 함
    • Maven Deploy Plugin
  • clean
    • target 디렉토리의 결과물을 모두 제거한다.
    • Maven Clean Plugin




댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?