以前に Maven2 プロジェクトで Groovy を使用する方法を見ました(一覧)。 ただし、Groovy は便利で、Java と Groovy がシームレスに連携できるとはいえ、いきなり Java プロジェクトを Groovy プロジェクトに変更できるとは限りません。
そこで、メインコードは Java のみで書き、テストコードは Groovy (と Java)で書けるというプロジェクト(の pom.xml)を考えてみます。
サンプルのパラメータ
まず、以下のサンプルで使用するパラメータを示しておきます:
パラメータ | 値 |
---|---|
groupId | org.sample |
artifactId | sample |
version | 1.0-SNAPSHOT |
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> ... </properties> <dependencies> ... </dependencies> <build> <defaultGoal>install</defaultGoal> <plugins> <plugin> ... </plugin> <plugin> ... </plugin> </plugins> </build> </project>
- 「project/build/defaultGoal」を install に設定しているのは個人的嗜好。 特に必須ではありません。
properties : プロパティ
次は pom.xml 内で使用するプロパティの値です。 一応、この箇所を変更すればプロジェクトの設定を変更できますが、pom.xml の書き方上、変更できないモノもあります。
<properties> <java.version>1.6</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <groovy.version>1.7.2</groovy.version> <gmaven.runtime>1.7</gmaven.runtime> <gmaven.version>1.2</gmaven.version> </properties>
- 「java.version」は Java ファイルのコンパイル時に source, target に指定する値です。 まぁ、1.5, 1.6 のどちらかでしょうね。
- 「project.build.sourceEncoding」はソースコードのエンコーディングです。 Javaコード、リソース、Groovy コードに対してエンコーディングを指定します。
- 「groovy.version」は Groovy のバージョンです。 変更する際には 1.7.x 系だけにして下さい。
- 「gmaven.runtime, gmaven.version」は基本的には変更しないでください。
dependencies : 依存性
次はプロジェクト内で使用するライブラリへの依存性です。 もちろん、必要なら他のライブラリへの依存性を追加してください。
<dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>${groovy.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies>
- Groovy はテスト内でだけ使うので、スコープを test にしておきましょう。
- JUnit は Groovy 内に入ってそうな気もしますが・・・ まぁ、一応。
plugin (1) : maven-compiler-plugin
プラグインその1、Java コードのコンパイルをする maven-compiler-plugin の設定。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${java.version}</source> <target>${java.version}</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin>
- source, target を java.version プロパティの値に指定します。
- encoding の指定も付加。
plugin (2) : gmaven-plugin
プラグインその2、テストのための Groovy コードに対してスタブコード生成 & コンパイルを行います。 指定されているゴールが generateTestStubs, testCompile の2つだけです。 dependencies 要素は Groovy 1.7 を使うために必要。
<plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <version>${gmaven.version}</version> <executions> <execution> <goals> <goal>generateTestStubs</goal> <goal>testCompile</goal> </goals> <configuration> <providerSelection>${gmaven.runtime}</providerSelection> <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>org.codehaus.gmaven.runtime</groupId> <artifactId>gmaven-runtime-${gmaven.runtime}</artifactId> <version>${gmaven.version}</version> <exclusions> <exclusion> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>${groovy.version}</version> </dependency> </dependencies> </plugin>
これで設定完了です。 まぁ、Groovy 1.7を使うプロジェクトの pom.xml とそんなには違いませんね。

- 作者: Dierk Konig,Andrew Glover,Paul King,Guillaume Laforge,Jon Skeet,杉浦孝,櫻井正樹,須江信洋,関谷和愛,佐野徹郎,寺沢尚史
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 146回
- この商品を含むブログ (121件) を見る

- 作者: Brett Porter,Maria Odea Ching
- 出版社/メーカー: Packt Publishing
- 発売日: 2009/09/30
- メディア: ペーパーバック
- クリック: 16回
- この商品を含むブログ (4件) を見る