Maven 입문 | Java 응용 프로그램 개발 | 플러그인(plugin)

작성한 프로젝트는 Maven 명령으로 빌드 Jar 파일에 통합할 수 있었다. 그러나, 이 Jar 파일, 좀 다루기가 번거롭다. -classpath에서 Jar 파일을 지정하여, 메인 클래스를 실행해 주지 않으면 안된다. “좀 더 실행을 간단히 할 수 없을까"라고 생각한 사람도 많을 것이다. 이는 가능하다. 다만 그러기 위해서는 ‘플러그인’의 사용법을 알아야 한다.

Maven은 다양한 기능이 “플러그인"으로 추가되어 있다. 프로그램의 실행은 “exec-maven-plugin"이라는 플러그인으로 구현되어 있다. 이 플러그인에 대한 설정 정보를 pom.xml에 추가하여 프로그램을 실행 할 수 있다.

플러그인이라는 것은 pom.xml의 <project> 태그 안에 다음과 같은 형태로 포함된다. (※빌드에 대한 플러그인의 경우)

<build>
    <plugins>
        <plugin> ... 생략 ... </plugin>
    </ plugins>
</ build>

<build>는 빌드에 관한 설정을 기술하기 위한 것으로, <plugins>는 플러그인 설정 정보를 정리하기위한 것이다. 이 안에 <plugin>라는 태그를 사용하여, 특정 플러그인에 대한 설정을 정리하고 있다.

플러그인은 이뿐만 아니라 많이 준비되어 있다. 사실은 이미 설명한 것 중에도 플러그인을 사용한 기능은 있다. 예를 들어, “mvn compile"라는 명령은 maven-conpiler-plugin이라는 플러그인으로 구현되는 것이다. 또한 “mvn package"는 maven-jar-plugin이라는 플러그인으로 구현되어 있다.

결국은 Maven에서 사용하는 골(compile이나 package 같은 것)라는 것은 모든 플러그인으로 내장되어있는 것이다. 이것들은 <dependency> 태그 등으로 라이브러리를 다운로드할 필요는 없다. 표준으로 제대로 사용할 수 있게 되어있는 것도 있고, 없다면 필요에 따라 다운로드된다. 따로 <dependency> 태그을 준비할 필요는 없다.

<plugin> 태그

이 플러그인의 설정 정보를 기술하는 <plugin> 태그는 그 플러그인에 대한 필요한 정보를 태그에 준비해야 한다.

최소한 준비해야 하는 태그으로는 대체로 다음과 같다

<plugin>
    <groupId>그룹 ID</groupId>
    <artifactId>아티팩트 ID</artifactId>
    <version>버전</version>
    <configuration>
        ...... 설정 정보 ......
    </configuration>
</plugin>

그룹 ID, 아티팩트 ID 및 버전 같은 것은 이제 익숙할 것이다. 이것들을 사용하여 사용하는 플러그인 프로그램을 지정한다. 이 후에 <configuration> 태그는 이 플러그인을 사용하는데 필요한 정보 등을 준비하기 위한 것이다. 이것은 플러그인에 의해 기술하는 내용은 다르다(필요없는 경우도 있다).