Maven의 Life Cycle에 대해

들어가며

매번 Maven을 사용하지만 언제나 깊게 이해하지 못하고 사용하는거 같아서 정리합니다. :)

Maven의 Life Cycle에 대해

  • Maven에서는 크게 3가지의 LifeCycle을 제공합니다.
    • Clean
    • Default
    • Site
  • 각 Build LifeCycle은 사전에 정의된 작은 Phase들을 가지고 있습니다.
    • Clean - 3개의 Phase
    • Default - 21개의 Phase
    • Site - 4개의 Phase
    • Reference
  • Phase는 시점을 의미합니다.
    • Phase 순서에 따라 Phase에 바인딩된 Goal이 실행되는 구조를 가지고 있습니다.
    • 각 Phase는 의존관계를 가지고 있으며 순서대로 실행이 됩니다.
    • Phase에 아무런 Goal이 없다면 해당 Phase는 실행이 되지 않습니다.
  • Phase에 Goal들을 바인딩하기 위해서는 Plugin을 추가해야 합니다.

Example CLI

  • mvn clean dependency:copy-dependencies package
    • clean phase에 바인딩된 Goal을 실행합니다.
    • 그리고 dependency:copy-dependencies Goal를 실행합니다.
    • package phase에 바인딩된 Goal을 실행합니다.

Example pom.xml

  • display:time이라고 선언하면 해당 Plugin Goal은 process-test-resources Phase에 실행이 됩니다.
 <plugin>
   <groupId>com.mycompany.example</groupId>
   <artifactId>display-maven-plugin</artifactId>
   <version>1.0</version>
   <executions>
     <execution>
       <phase>process-test-resources</phase> // 원하는 Phase에 바인딩 될지 설정.
       <goals>
         <goal>time</goal> // Goal이름
       </goals>
     </execution>
   </executions>
 </plugin>

Reference

0%