倭マン's BLOG

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

イカす達人 (4) : Groovy コードを実行する

今回は Maven2 で Groovy コードを実行する方法を紹介(一覧)。 「Executing Groovy Code」を参考にしてます。

前々回と同じように、GMaven のサポートのせいで Groovy 1.7 以降を使うにはいろいろ設定が必要です。 とはいっても、ここで Groovy 1.6 を使ってもプロジェクトや成果物にはあまり関係がないので、特に必要がなければ Groovy 1.7 を使う必要はないかも。

Groovy 1.6 以前を使用する


ここで見ていくのは

  • pom.xml
  • 実行のためのコマンド
  • 実行結果

です。

★pom.xml

Maven2 で Groovy コードを実行する方法はいくつかあるようですが、今回は単独のゴールで Groovy コードを実行する方法を見ていきます。

実行したいコードは GMaven のプラグイン設定の中の configuration/source 要素に書きます。 ここで書きたい Groovy コードは

println 'Hello, GMaven World !'

とします。 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>
        <configuration>
          <source>
            println 'Hello, GMaven World !'
          </source>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

XML 文書としてエスケープが必要な文字(<, >, &)が何度も出てくる場合は、CDATA セクション(<![CDATA[...]]>)を使うといいでしょう。

★実行のためのコマンド

上記の pom.xml で Groovy コードを実行するためには、「groovy:execute」ゴールを実行します。 具体的には、以下のコマンド

mvn groovy:execute

を実行するだけです。

★実行結果

実行結果は以下の通り:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - org.sample:sample:jar:1.0-SNAPSHOT
[INFO] task-segment: [groovy:execute]
[INFO] ------------------------------------------------------------------------
[INFO] [groovy:execute {execution: default-cli}]
Hello, GMaven World !
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12 seconds
[INFO] Finished at: Sat Apr 10 04:13:11 JST 2010
[INFO] Final Memory: 10M/24M
[INFO] ------------------------------------------------------------------------

Groovy 1.7


次は Groovy 1.7 を使うバージョン。 ただし、実行するためのコマンドも実行結果も Groovy 1.6 の場合と同じなので、ここでは pom.xml の内容のみ見ていきます。

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>

  <properties>
    <groovyVersion>1.7.0</groovyVersion>
    <gmavenVersion>1.2</gmavenVersion>
    <groovyProviderSelection>1.7</groovyProviderSelection>
    <antVersion>1.8.0</antVersion>
  </properties>
    
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <version>${gmavenVersion}</version>

        <configuration>
          <providerSelection>${groovyProviderSelection}</providerSelection>
          <source>
            println 'Hello, GMaven World !'
          </source>
        </configuration>
          
        <dependencies>
          <dependency>
            <groupId>org.codehaus.gmaven.runtime</groupId>
            <artifactId>gmaven-runtime-${groovyProviderSelection}</artifactId>
            <version>${gmavenVersion}</version>
            
            <exclusions>
              <exclusion>
                <!-- gmaven runtime has a dependency on groovy-all v1.6 but we want 1.7.0 -->
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-all</artifactId>
              </exclusion>
            </exclusions>
          </dependency>

          <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>${groovyVersion}</version>
          </dependency>

          <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>${antVersion}</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>

ここでの設定の多くは、前々回行った、「グループ ID の変更」や「groovy-runtime, groovy-all のバージョンなどの設定」ですが、それに加えて「Apache Ant への依存性 を付加」しないといけない所が注意点でしょうか。

プロパティ(project/properties/...)をいくつか定義してますが、これらは自己満足のレベルです。 普通に数値を埋め込んだ方が見やすいかも。

Groovyイン・アクション

Groovyイン・アクション


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

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