...
Maven Lifecycle과 Plugin의 동작 원리
다음은 아주 간단한 그림으로 Maven 동작 순서가 이미 고정되어 있습니다. Maven은 동작 생명 주기를 phase로 구분해두었고 특정 phase가 되면 이벤트가 발생하고 해당 이벤트를 받아서 플러그인이 동작합니다. 그래서 플러그인을 개발하는 개발자는 플러그인에 기능을 넣으면서 언제 동작할지를 결정합니다. 또한 플러그인에는 하나 이상의 단위 기능을 포함하고 있는데 단위 기능을 goal이라고 합니다. 따라서 모든 Maven Plugin은 하나 이상의 goal을 구현하고 있습니다. 예를 들어 소스코드를 컴파일 하는 기능이 독립적인 단위 기능이면 이 기능을 goal로 정의할 수 있습니다. 이렇듯 maven plugin을 구현하는 개발자는 자신만의 단위 기능을 goal로 정의하고, 이 goal이 어느 phase때 동작해야하는지를 명시합니다. 그러면 해당 phase가 되면 goal이 자동으로 실행됩니다. 물론 해당 maven plugin의 goal이 실행되려면 Maven POM의 빌드 설정에 plugin을 추가해야 합니다. 다음의 도식을 보면 좌측에는 phase가, 우측에는 goal이 매핑되어 있습니다. Apache Maven을 개발하는 개발자들은 Maven Plugin을 다양하게 개발하여 처음에 제공했습니다. 대표적으로 컴파일하는 Maven Compiler Plugin이 되겠습니다. Maven은 Ant와 다르게 Maven Core만 포함되어 있고 plugin은 모두 인터넷으로 다운로드하며, 처음부터 제공하는 Maven Plugin은 이미 Maven Core와 잘 결합하여 동작하도록 네이밍이 표준화되어 있습니다.
다음은 전체 phase에 대해서 Maven Plugin을 매핑한 도식입니다. 파란색으로 표시되어 있는 phase는 가장 기본이 되는 phase라고 할 수 있겠습니다.
Maven Phase의 종류
다음은 Maven의 Lifecycle입니다. Phase라고 부르는 것이 Lifecycle을 처리하는 단계로 보면 되며 Phase = Lifecycle로 봐도 무방합니다. 또한 개발자는 Phase를 직접 지정하여 해당 단계를 까지 실행할 수 있습니다. 다음에서 파란색으로 표시한 Phase는 가장 많이 사용하는 Phase입니다. 예를 들어 compile
Phase를 실행하면 validate
→ compile
까지 실행됩니다. 실행은 mvn compile
로 Maven을 실행하면 됩니다.
...