Post

메이븐 Plugins 정보

메이븐 Plugins 정보

Plugin

Goal

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

Compiler plugin

  • 기본적으로 maven은 jdk 1.5 기준으로 compile을 시도한다.
  • 1.5버전보다 더 높은 버전으로 compile 하기 위해서는 다음과 같은 조치가 필요하다
1
2
3
4
5
6
7
8
9
10
11
12
<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>

Jar Plugin

  • jar 패키징된 파일을 실행하기 위해서 ManifestFile을 생성해주는 plugin
1
2
3
4
5
6
7
8
9
10
11
12
13
<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>
  • 특별한 classpath 지정없이 실행할 수 있다.
1
$ java -jar target/HelloWorld-1.0-SNAPSHOT.jar

Source Plugin

  • package 시에 Source 코드를 포함시킨다.

  • 아래의 코드를 추가하면 package 수행 및 install 수행 시 기본 jar명-sources.jar 파일이 추가로 하나 생성된다.

  • 내부에 <goal> 설정은 plugin 별도 고유의 goal이 있다.

    • https://maven.apache.org/plugins/maven-source-plugin/plugin-info.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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>

Javadoc Plugin

  • java doc 문서를 자동 발행해주는 플러그인
  • 아래와 같이 java 코드에 문선화 주석을 html문서로 떨구어 준다.
1
2
3
4
5
6
7
8
9
10
/***
 * 한글은 잘안되나?
 * @author Blidkaga
 *
 */
public class HelloWorld{
    public static void main(String args[]){
        System.out.println("Maven Hello World!");
    }
}
  • javadoc plugin 을 설정하는 코드
  • configuration 항목은 한글 관련 설정
1
2
3
4
5
6
7
8
9
<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>
  • javadoc goal 명령어 모음
  • goal 과 관련된 내용
    • https://maven.apache.org/plugins/maven-javadoc-plugin/plugin-info.html
  • remote에 자동 업로드는 아래 링크 참조
    • https://www.lesstif.com/display/JAVA/maven+site+plugin
1
2
3
4
5
6
7
8
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

Tomcat 배포 플러그인

  • http://blog.iotinfra.net/?p=1201
  • tomcat-user.xml tomcat 설치 경로 > conf 아래에 존재
1
2
3
4
5
<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
</tomcat-users>
  • pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<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>
  • 추가 참조 : https://www.lesstif.com/pages/viewpage.action?pageId=14090451

dependency를 포함하는 실행가능한 jar 만들기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <archive>
            <manifest>
                <classpathPrefix>lib/</classpathPrefix>
                <addClasspath>true</addClasspath>
                <mainClass>com.blidkaga.HelloWorld</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>
This post is licensed under CC BY 4.0 by the author.