倭マン's BLOG

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

GMaven プラグインを作ろう! (1) : GMaven プラグイン・プロジェクトの生成

今回から何回かにわたって、Groovy を使った Maven2 プラグイン(以下「GMaven プラグイン」)の開発方法を見ていきます(Implemeting Maven Plugins 参照)。 今回は GMaven プラグイン・プロジェクトの生成方法(一覧)。

  • GMaven プラグイン・プロジェクトの生成 (Groovy 1.5)
  • GMaven プラグイン・プロジェクトの生成 (Groovy 1.6)
  • GMaven プラグイン・プロジェクトの生成 (Groovy 1.7)
  • 生成されるプロジェクト

GMaven プラグイン・プロジェクトの生成 (Groovy 1.5)


Groovy 1.5 以前のバージョンでよい場合は、対話的にプロジェクトを生成すると簡単です。 対話的にプロジェクトを生成する方法は、毎度の如く

mvn archetype:generate

と入力し、後は画面にそって求められているパラメータ値を入力していくだけです。 ただし、archetype の種類を指定する番号は 41 (gmaven-archetype-mojo) にします。 以下のパラメータ

パラメータ
groupId org.sample
artifactId sample*1
version 1.0-SNAPSHOT (デフォルト値)
package org.sample (= groupId デフォルト値)

でプロジェクトを作成するには、以下のようにします:


>mvn archetype:generate[Enter]
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:generate] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing archetype:generate
[INFO] No goals needed for project - skipping
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.
[INFO] Setting property: velocimacro.messages.on => 'false'.
[INFO] Setting property: resource.loader => 'classpath'.
[INFO] Setting property: resource.manager.logwhenfound => 'false'.
[INFO] [archetype:generate {execution: default-cli}]
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: internal -> appfuse-basic-jsf (AppFuse archetype for creating a web application with Hibernate, Spring and JSF)
...
40: internal -> gmaven-archetype-basic (Groovy basic archetype)
41: internal -> gmaven-archetype-mojo (Groovy mojo archetype)

Choose a number: (1/.../40/41) 15: : 41[Enter]
Define value for groupId: : org.sample[Enter]
Define value for artifactId: : sample[Enter]
Define value for version: 1.0-SNAPSHOT: : [Enter]
Define value for package: org.sample: : [Enter]
Confirm properties configuration:
name: Example Maven Plugin
groupId: org.sample
artifactId: sample
version: 1.0-SNAPSHOT
package: org.sample
Y: : y[Enter]
[WARNING] org.apache.velocity.runtime.exception.ReferenceException: reference : template = archetype-resources/src/main/groovy/HelloMojo.groovy [line 37,column 31] : ${message} is not a valid reference.
[WARNING] org.apache.velocity.runtime.exception.ReferenceException: reference : template = archetype-resources/src/main/groovy/HelloMojo.groovy [line 42,column 18] : ${message} is not a valid reference.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 38 seconds
[INFO] Finished at: Fri Apr 23 16:11:21 JST 2010
[INFO] Final Memory: 8M/21M
[INFO] ------------------------------------------------------------------------

GMaven プラグイン・プロジェクトの生成 (Groovy 1.6)


Groovy 1.6 を使用したい場合は、対話的にプロジェクトが生成できないので、以下のようにパラメータを指定しなければなりません(1行で)。

mvn archetype:generate
-DarchetypeGroupId=org.codehaus.gmaven.archetypes
-DarchetypeArtifactId=gmaven-archetype-mojo
-DarchetypeVersion=1.2

  • archetypeGroupId は「org.codehaus.gmaven.archetypes」です。
  • archetypeVersion も指定する必要があります。

GMaven プラグイン・プロジェクトの生成 (Groovy 1.7)


Groovy 1.7 を使用したい場合は、上記 Groovy 1.5 / 1.6 の方法でプロジェクトを生成した後、pom.xml を修正(もしくは置き換え)する必要があります。 これについては次回以降に。

生成されるプロジェクト


生成されるプロジェクトのフォルダ構造は以下のようになります。

  • src/main/groovy」・・・ソースコードを配置するフォルダ
  • src/test/groovy」・・・テストコードを配置するフォルダ

Groovyイン・アクション

Groovyイン・アクション


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

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

*1:Maven2 プラグインの artifactId は今の場合「maven-sample-plugin」または「sample-maven-plugin」とするのが通例のようです。 この artifactId の場合には、プラグインの実行の祭に少しコマンドが短くなるようです。