티스토리 뷰

learning

About "Executions" Tag on Maven

눈침침 2009. 7. 27. 23:15

Using Dojo with Maven 이라는 문서를 살펴보면, Maven 의 pom.xml 파일에 다음과 같은 코드를 추가하여 dojo 코드를 다운받는 예제가 존재한다.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>unpack dojo</id>
      <phase>generate-sources</phase>
      <goals>
        <goal>unpack</goal>
      </goals>
      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>org.dojotoolkit</groupId>
            <artifactId>dojo</artifactId>
            <version>${project.version}</version>
            <type>zip</type>
          </artifactItem>
        </artifactItems>
        <outputDirectory>${project.build.directory}/dojo</outputDirectory>
      </configuration>
    </execution>
  </executions>
</plugin>

 

도대체 어떤 일을 하는 것일까? 불행히도 난 Maven을 그냥 가져다 쓰는 수준밖에 되지 않기에 이를 읽기 위해서 executions 에 관한 내용을 찾아 봐야 했다.

 

About Executions

  Maven 프로젝트는 JAR나 WAR와 같은 각각의 Packaging 방법이 존재하며, 해당 Packaging 방법에 따라 진행해 나아가는 작업들의 목록들(Phases) 가 존재한다. 그리고 각 Phase 는  구체적인 작업이 명시되어 있는 Maven-Plugin과 해당 Plugin의 Goal로 정의 된다.

이렇게 Maven에서 정의해 놓은 Lifecycle 에 추가적인 작업을 하고자 할때 “Executions” 요소를 쓴다.

 

Return to codes

그럼 위의 코드를 읽어보자.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>. . .</executions>
</plugin>

우선 추가적으로 내가 하고 싶은 일은 org.apache.maven.plugins 그룹의 maven-dependency-plugin에 정의 된 Goal 중 하나를 이용하고 싶다는 것이다.

<plugin> 
  <executions>
    <execution>
      <id>unpack dojo</id>  
        . . .
      <goals>
        <goal>unpack</goal>
      </goals>
      <configuration> 
         . . .
      </configuration>
    </execution>
  </executions>
</plugin>

바로 unpack이라는.. (configutation은 maven-dependency-plugin의 실행에 관한 arguments임으로 여기선 생략.)

여기서 주의할 점은 현재 Project의 Life-cycle 에 dependency:unpack 이라는 goal을 실행하는 Phase가 있다면 해당 Phase에서 이 Goal은 실행될 것이다. 하지만 그렇지 않은 경우 어떤 Phase에서 이 작업이 실행되어야 하는지 명시해 주어야 한다.

<plugin> 
  . . .
  <executions>
    <execution> 
      . . . 
      <phase>generate-sources</phase> 
      . . .
    </execution>
  </executions>
</plugin>

이렇게 하면 현재 Project의 Lifecycle 중 “generate-sources”에서 위의 명시한 추가 작업을 수행하게 되는 것이다.

 

And ..

그럼 마지막으로 maven-dependency-plugin의 unpack 에 대한 설명은…

해당 플러그인 사이트를 참조하도록하자.

Link: maven-dependency-plugin:unpack

 

CAUTION

  • maven-dependency-plugin 에는 실재로 unpack이라는 goal이 존재해야 한다는 사실을 까먹지 말자
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함