倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

イカす達人 (5) : フェイズ実行時に Groovy コードを実行する

前回に引き続き、今回は「フェイズ実行時」に Groovy コードを実行する方法を見ていきます(一覧)。

今回以降、特に必要がない限り Groovy 1.7 ではなく、Groovy 1.6 (GMaven 1.2) の環境を前提とします。

pom.xml


実行したい Groovy コードは前回と同じく

println 'Hello, GMaven World !'

とし、Groovy コードを実行したいフェーズを generate-resources とします。

pom.xml の内容は以下のようにします:

<?xml version="1.0" encoding="UTF-8"?>

<project
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.sample</groupId>
  <artifactId>sample</artifactId>
  <version>1.0-SNAPSHOT</version>
    
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <version>1.2</version>

        <executions>
          <execution>
            <phase>generate-resources</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <source>
                println 'Hello, GMaven World !'
              </source>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
  • Groovy コードを実行したいフェーズは、gmaven-plugin を設定する <plugin> 要素下の「executions/execution/phase」要素下に書きます。
  • 実行したい Groovy コードは、上記の phase を設定した <execution> 要素下の「configuration/source」要素に書きます。

コマンド


Maven2 の実行方法は、通常のフェーズを指定した実行方法です。 上記の pom.xml では genreate-resources に処理を割り当てているので、

mvn generate-resources

とすれば、以下のような実行結果を得ます:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - org.sample:sample:jar:1.0-SNAPSHOT
[INFO] task-segment: [generate-resources]
[INFO] ------------------------------------------------------------------------
[INFO] [groovy:execute {execution: default}]
Hello, GMaven World !
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Tue Apr 13 05:53:09 JST 2010
[INFO] Final Memory: 12M/29M
[INFO] ------------------------------------------------------------------------

また、フェーズの実行は実際にはライフサイクルの実行で、指定したフェーズ以外にも(ライフサイクル中で)それ以前のフェーズも実行されるので、例えば

mvn compile

としても generate-resources フェーズは実行されます。

Apache Maven 2.0入門 Java・オープンソース・ビルドツール

Apache Maven 2.0入門 Java・オープンソース・ビルドツール


Apache Maven 2 Effective Implementation: Build and Manage Applications With Maven, Continuum, and Archiva

Apache Maven 2 Effective Implementation: Build and Manage Applications With Maven, Continuum, and Archiva