今回は GMaven プラグイン・プロジェクト(Groovy による Maven2 プラグインを開発するプロジェクト)の pom.xml を見ていきます(一覧)。
まずその前に、お詫びと訂正を。 別に拙者が悪いわけではないんですけど。 前回見た GMaven プラグイン・プロジェクトの生成方法ですが、「対話的にプロジェクトを生成する」方法でも「パラメータを指定してプロジェクトを生成する」方法でも、生成された pom.xml そのままではうまく動かないようです。 正確には、install はできますが、実際に他のプロジェクトでそのプラグインを使おうとすると例外が投げられるといった具合です*1。
また、「Groovy 1.7 を使用する方法」を後日書くと言っていましたが、ちょっとした修正程度では使用できるようにならなさそうなので Groovy 1.7の使用は諦めます*2。
総じて「GMaven で Maven2 プラグインを開発している人間は、世界中に1人もいない」という結論に達しました(^ ^;) 書く気力がゴッソリなくなりましたが、あれこれ試行&錯誤したのを無駄にするのもそれはそれで哀しいので、とりあえず動いたサンプルだけでも書いておきます。
Groovy 1.6 + GMaven 1.2
Groovy 1.7 の使用は諦めたので、Groovy 1.6 を使用します。
また、各プロジェクトで設定する必要のある値 (groupId, artifactId, version) には、以下の値を使用します:
パラメータ名 | 値 |
---|---|
groupId | org.sample |
artifactId | meven-hello-plugin |
version | 1.0 |
これらを踏まえて、GMaven プラグイン・プロジェクトの 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>maven-hello-plugin</artifactId> <version>1.0</version> <packaging>maven-plugin</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-mojo</artifactId> <version>1.2</version> <exclusions> <exclusion> <groupId>org.codehaus.gmaven.runtime</groupId> <artifactId>gmaven-runtime-1.5</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.codehaus.gmaven.runtime</groupId> <artifactId>gmaven-runtime-1.6</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <defaultGoal>install</defaultGoal> <plugins> <plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <version>1.2</version> <executions> <execution> <goals> <goal>generateStubs</goal> <goal>compile</goal> <goal>generateTestStubs</goal> <goal>testCompile</goal> </goals> <configuration> <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding> <providerSelection>1.6</providerSelection> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
- 「<packaging>maven-plugin<packaging>」の設定は大切。 忘れないように。
- ソースコードのエンコーディングは UTF-8 に設定しています。 変更したい場合は「project/properties/source.encoding」要素のテキストを変更してください。
- 使用される Groovy のバージョンは1.6.5です。

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

Programming Groovy: Dynamic Productivity for the Java Developer (The Pragmatic Programmers)
- 作者: Venkat Subramaniam
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2008/04
- メディア: ペーパーバック
- クリック: 8回
- この商品を含むブログ (8件) を見る
*1:「org.codehaus.groovy.runtime.callsite.CallSite が見つからない」と言ったメッセージが出てくるので、適切な依存性を付加すれば動きそうなんですが・・・何故か上手く動かない。
*2:誰かが「設定方法の確立」もしくは「プラグインのバグの修正」をしてくれることを祈って、一応原因を書いておきます。 原因は GroovyMojo の実装クラスからその Java スタブコードを生成する際に(つまり generateStubs ゴールの実行時に) JavaDoc が除去されてしまうことです。 その結果、@goal (や @parameter)が設定されていないとみなされます。 別途 Java アノテーションで設定できるようになっているとかいうこともなさそうです