Maven 정복 - 10. Plugin

1. Goal

  • Maven에서 사용되는 clean, compile, package 등의 goal 명령어들도 사실상 plugin으로 내장되어 있다.
    • clean, compile, test, install, package, deploy

2. Compiler plugin

  • 기본적으로 maven은 jdk 1.5 기준으로 compile을 시도한다.
  • 1.5버전보다 더 높은 버전으로 compile 하기위해서는 다음과 같은 조치가 필요하다.
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <compilerArgument>-Xlint:all</compilerArgument>
        <showWarnings>true</showWarnings>
        <showDeprecation>true</showDeprecation>
    </configuration>
</plugin>

3. Jar Plugin

  • jar 패키징된 파일을 실행하기 위해서 ManifestFile을 생성해주는 plugin
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
      <archive>
        <manifest>
          <addClasspath>true</addClasspath>
          <mainClass>HelloWorld</mainClass>
        </manifest>
      </archive>
    </configuration>
</plugin>
$ java -jar target/HelloWorld-1.0-SNAPSHOT.jar

4. Source Plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>3.0.1</version>
    <executions>
        <execution>
            <id>attach-resources</id>
            <phase>package</phase>
            <goals>
                    <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

5. Javadoc Plugin

  • java doc 문서를 자동 발행해주는 플러그인
  • 아래와 같이 java 코드에 문서화 주석을 html문서로 떨구어 준다.
/***
 * 한글은 잘안되나?
 * @author Blidkaga
 *
 */
public class HelloWorld{
    public static void main(String args[]){
        System.out.println("Maven Hello World!");
    }
}
  • javadoc plugin 을 설정하는 코드
  • configuration 항목은 한글 관련 설정
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-javadoc-plugin</artifactId>
   <version>2.9.1</version>
   <configuration>
    <locale>ko_kr</locale>
    <encoding>utf-8</encoding>
   </configuration>
 </plugin>
mvn javadoc:javadoc
mvn javadoc:jar
mvn javadoc:aggregate
mvn javadoc:aggregate-jar
mvn javadoc:test-javadoc
mvn javadoc:test-jar
mvn javadoc:test-aggregate
mvn javadoc:test-aggregate-jar

6. Tomcat 배포 플러그인

<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
</tomcat-users>
  • pom.xml
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.1.1</version>
  <configuration>
    <warSourceDirectory>src/main/webapp</warSourceDirectory>
    <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
  </configuration>
</plugin>
 
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>tomcat-maven-plugin</artifactId>
  <version>1.1</version>
  <configuration>
    <url>http://localhost:8080/manager/text</url>
    <path>/simple</path>
    <username>tomcat</username>
    <password>tomcat</password>
  </configuration>
</plugin>