메이븐 페이즈와 플러그인
메이븐이 제공하는 모든 기능은 플러그인 기반으로 동작한다. 메이븐 페이즈 또한 플러그인을 통하여 실질적인 작업이 실행된다. 고로 메이븐에서 플러그인은 매우 중요하다..!
메이븐 플러그인
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
</plugin>
</plugins>
</build>
...
</project>
위의 소스는 compiler 플러그인을 사용하도록 설정한 것이다.
메이븐 플러그인은 하나의 플러그인에서 여러 작업을 수행할 수 있도록 지원한다. 실행할 수 있는 각각의 작업을 골(goal)이라고 정의한다.
예를 들면 compiler 플러그인은 하나지만 이 플러그인은 아래와 같은 골(goal)들을 지원한다.
- sourceDirectory의 소스 코드를 컴파일 하는 compile 골
- testSourceDirectory의 테스트 소스 코드를 컴파일하는 testCompile 골
- Compiler 플러그인에 대한 도움말을 제공하는 help 골
빌드 스크립트에서 설정한 플러그인은 아래와 같은 방법으로 실행할 수 있다.
mvn groupId:artifactId:version:goal
maven compiler의 compile 골을 실행하기 위해선
mvn org.apache.maven.plugins:maven-compiler-plugin:2.1:compile
로 실행한다.
이 명령어를 간단히 실행할 수 있는 방법이 있는데
-
가장 최신 버전의 플러그인을 실행하기를 원한다면 version을 생략할 수 있음 (groupId:artifactId:goal)
-
artifactId가 'maven-#name-plugin'과 '#name-maven-plugin' 규칙을 따르면 (groupId:#name:goal)로 실행이 가능하다.=> org.apache.maven.plugins:compiler:compile
-
settings.xml 에 groupId목록을 추가하면 '#name:goal' 로 실행할 수 있다.
<pluginGroups> <pluginGroup>org.apache.maven.plugins</pluginGroup> </pluginGroups>
compiler:compile 이 가능하게 된다.
archetype:generate도 위와 같은 원리라고 생각하면 된다. (archetype이라는 플러그인 이름으로 generate 골을 실행시킴)
참고) 아파치 메이븐 사이트
페이즈와 플러그인의 관계
페이즈는 빌드 라이프사이클에서 순서만을 정의하고 있는 개념으로 직접 작업을 하지 않는다.
실질적인 작업은 페이즈와 연결되어 있는 플러그인의 골이 한다.
mvn compile
을 수행하게되면 compile 페이지를 실행한 것이고, compile 페이즈를 실행하면 compile 페이즈와 연결되어 있는 compiler 플러그인의 compile 골이 실행되면서 컴파일 작업을 진행하게 된다.
메이븐 기본 페이즈와 골 간의 관계
(출처 : 자바세상의 빌드를 이끄는 메이븐 )
기본 페이즈에 대한 플러그인 정보는 메이븐이 이미 알고 있어서 추가 설정없이 페이즈를 실행하게되면 플러그인을 자동으로 다운받아 실행하게 된다.
메이븐의 모든 작업은 플러그인 기반으로 동작하는걸 볼 수 있다.
'프로그래밍 노트 > 빌드도구' 카테고리의 다른 글
[Maven] 메이븐 기본 페이즈와 플러그인_2(테스트, 패키징) (0) | 2019.03.31 |
---|---|
[Maven] 메이븐 기본 페이즈와 플러그인_1(컴파일) (0) | 2019.03.28 |
[Maven] 메이븐 라이프사이클과 페이즈 (0) | 2019.03.28 |
[Maven] 메이븐 설정 파일 (pom.xml) (0) | 2019.03.25 |
[Maven] 메이븐 설정 파일 (settings.xml) (0) | 2019.03.25 |