Whiteship's Note

Plugin

Build/Maven : 2007.11.28 10:54


플러그인 역시 Maven의 핵심 요소로 Goal이라는 실행 단위들을 집합으로 구성되어 있습니다. 플러그인은 새로운 패키징 타입을 도입하여 빌드 라이프사이클을 만들어낼 수도 있습니다.

플러그인 이름 살펴보기

여태까지 사용했었던 clean:clean 이라는 Goal은 실제로는 org.apache.maven.plugins:maven-clean-plugin:clean 이었습니다. 특정 버전의 플러그인을 사용하기 위해 다음과 같이 버전을 명시할 수도 있습니다. org.apache.maven.plugins:maven-clean-plugin:2.1.1:clean

위 Goal의 맨 앞의 값 org.apache.maven은 groupId로 기본값이 org.apache.maven입니다.

<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>

따라서 플러그인을 등록할 때도 groupId가 빠져있는데, 기본으로 org.apache.maven.plugins 와 org.codehaus.mojo 는 생략해도 됩니다. 생략해도 되는 groupId를 추가하고 싶다면, settings.xml 의 pluginGroups 엘리먼트에 다음과 같이 추가해주면 됩니다.

<settings>
  ...
  <pluginGroups>
    <pluginGroup>com.training.plugins</pluginGroup>
  </pluginGroups>
</settings>

=> mvn maven-zip-plugin:zip
이제 위와 같이 사용할 수 있습니다.

중간에 위치한 플러그인 이름은 <<<maven-${name}-plugin>> 이런 형식이거나 ${name}-maven-plugin 이기 때문에 컨벤션에 따라 플러그인을 찾습니다. 따라서 다음과 같이 플러그인 이름도 줄여서 사용할 수 있습니.다

=> mvn zip:zip

플러그인 설정하기

플러그인 정보를 build 엘리먼트의 plugins 목록에 넣어줍니다. 그리고 각각의 플러그인이 필요로 하는 기본 설정을 해줍니다. 이 부분이 다소 복잡할 수 있지만 CoC에 입각하여 기본 설정 값들을 사용할 수 있습니다. 특정 Goal들은 기본적으로 빌드 라이프사이클의 특정 Phase과 연관을 맺게 됩니다. 하지만 이런 기본 설정을 변경할 수도 있습니다.
  • 이미 라이프사이클의 일부로 등록되어 있는 플러그인이나 특정 Goal을 설정하기
  • 라이프사이클에 등록되어 있지 않은 플러그인이나 특정 Goal을 설정하기
  • 라이프사이클의 일부로 특정 Goal을 추가하고 설정하기
  • 플러그인 종속성 목록 변경하기
  • 플러그인 확장기능을 빌드 클래스로더에 추가하기
위에서 세 번째 까지는 plugin 엘리먼트의 configuration 엘리먼트를 사용하며, 나머지는 다른 것을 사용합니다. 다음은 complie 플러그인의 기본 값을 JDK 1.4로 변경하는 설정입니다.

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.4</source>
          <target>1.4</target>
        </configuration>
      </plugin>

특정 Goal의 설정을 변경하고 싶다면, 다음과 같이 execution 엘리먼트 안에서 하나의 Goal과 그것의 설정을 변경할 수 있습니다.

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>testCompile</goal>
            </goals>
            <configuration>
              <source>1.4</source>
              <target>1.4</target>
            </configuration>
          </execution>
        </executions>
      </plugin>

빌드 라이프사이클에 등록되어 있지않은 플러그인을 설정하는 방법은 다음과 같습니다.

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <configuration>
          <tasks>
            <echo>The JAVA_HOME var is ${env.JAVA_HOME}</echo>
          </tasks>
        </configuration>
      </plugin>

이렇게 하면, 이 Goal을 실행시키기 위해서 mvn antrun:run 을 실행해야 합니다. 특정 Phase에 연과시키기 위해서드는 다음과 같이 설정해 줍니다.

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <configuration>
          <tasks>
            <echo>The JAVA_HOME var is ${env.JAVA_HOME}</echo>
          </tasks>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>run</goal>
            </goals>
            <phase>verify</phase>
          </execution>
        </executions>
      </plugin>



'Build > Maven' 카테고리의 다른 글

Maven 괜찮은데~  (0) 2007.12.04
Site Generation  (0) 2007.12.03
http://mvnrepository.com/  (0) 2007.12.02
Profile  (0) 2007.11.30
Archetype  (0) 2007.11.29
Plugin  (4) 2007.11.28
Build Lifecycle(site)  (0) 2007.11.27
Build Lifecycle(default 자세히)  (0) 2007.11.27
Build Lifecycle(default)  (0) 2007.11.27
Build Lifecycle(clean)  (2) 2007.11.27
POM  (0) 2007.11.26
top

TAG ,



: 1 : ··· : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : ··· : 50 :