# Table of Contents

# Maven 플러그인

Maven 플러그인은 pom.xml에 다음과 같은 형태로 추가한다.

<project>
    <!-- .. -->

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
            </plugin>
            </plugin>
        </plugins>
    </build>

</project>

예제에서는 Maven Compiler Plugin (opens new window)을 추가하고 있다.

원격 저장소에서 다운받은 플러그인은 로컬 저장소에 저장된다. 로컬 저장소의 위치는 보통 /[user_home_directory]/.m2/repository/org/apache/maven/plugins에 위치한다.

$ pwd
/Users/yologger/.m2/repository/org/apache/maven/plugins

$ ls        
maven-compiler-plugin           
maven-install-plugin      
maven-archetype-plugin          
maven-dependency-plugin         
maven-jar-plugin                 
maven-war-plugin           
maven-release-plugin         
maven-deploy-plugin             
maven-clean-plugin              
maven-site-plugin
// ...

# Goal

하나의 Plugin은 여러 개의 Goal로 구성된다. 예를 들어 Maven Compiler Plugin은 다음과 같은 Goal을 지원한다.

  • compile: sourceDirectory의 소스 코드를 컴파일
  • testCompile: testSourceDirectory의 테스트 소스 코드를 컴파일

Goal은 다음과 같이 실행할 수 있다.

$ mvn groupId:artifactId:version:goal

예를 들어 Maven Compiler Plugin의 compile goal은 다음과 같이 실행한다.

$ mvn org.apache.maven.plugins:maven-compiler-plugin:2.1:compile

만약 Settings.xml에 groupId를 추가하면 더 쉽게 Plugin과 Goal을 실행할 수 있다.

<pluginGroups>
  <pluginGroup>org.apache.maven.plugins</pluginGroup>
</pluginGroups>
// mvn <plugin>:<goal>
$ mvn compiler:compile 

프로젝트를 생성할 때 사용하는 mvn archetype:generate명령어도 사실은 Plugin과 Goal이다.

// mvn <plugin>:<goal>
$ mvn archetype:generate