前回、GMaven でプロジェクトを生成する方法を見ましたが、どうもドキュメントが古いようで Groovy のバージョンが 1.5.6 とかでしか使えないので、Groovy, GMaven ともにもう少し新しいバージョンのものを使えるようにしましょう(一覧)。
今回の内容:
- プロジェクトのパラメータ
- Groovy 1.6 以前でも良い場合
- Groovy 1.7 以降を使いたい場合
プロジェクトのパラメータ
サンプルのプロジェクトで指定しているパラメータは以下のようにしています(前回と同じ):
パラメータ名 | パラメータ値 |
---|---|
grougId | org.sample |
artifactId | sample |
version | 1.0-SNAPSHOT |
Groovy 1.6 以前でもよい場合
「mvn archetype:generate」コマンドで普通に Groovy 1.7 とかが使えれば問題ないのですが、残念ながら今のところ Maven Repository には Groovy 1.6 に対応するものまでしかありません(たぶんそのうち使えるようになるかと思いますが)。 で、Groovy 1.7 以降を使いたい場合は後回しにして、Groovy 1.6 まででいい場合について見ていきます。
この場合は、前回の「パラメータを指定してプロジェクトを生成する」方法を使います。 実行するコマンドは
mvn archetype:generate
-DarchetypeGroupId=org.codehaus.gmaven.archetypes
-DarchetypeArtifactId=gmaven-archetype-basic
-DarchetypeVersion=1.2
です(1行で)。 注意点は
- archetypeGroupId が「org.codehaus.gmaven.archetypes」になっている(前回は「org.codehaus.groovy.maven.archetypes」でした)。
- archetypeVersion を1.2と指定している(バージョンのデフォルト値は1.0だが、このバージョンは提供されていない)。
です。
Groovy 1.7 以降を使用したい場合
Groovy 1.7 を使えるようにするためには、ディレクトリ構造を作成した後、pom.xml をあれこれ書き換えます。
以下の内容は、GMaven のドキュメント(のコメント欄)からリンクの張られている Ben Tilford's Blog「Groovy 1.7.0 and GMaven 1.2 Multi Module Projects」を参考にしています。
<?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> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <groovy.version>1.7.0</groovy.version> <gmaven.runtime>1.7</gmaven.runtime> <gmaven.version>1.2</gmaven.version> </properties> <dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>${groovy.version}</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>${gmaven.version}</version> <executions> <execution> <goals> <goal>generateStubs</goal> <goal>compile</goal> <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> <!-- 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>${groovy.version}</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>
注意点:
- Groovy 1.7.0, GMaven 1.2 を使用しています。 これらのバージョンを変えたい場合は、project/properties の子要素の対応するテキストを変更して下さい。
- 前回の方法で使用される pom.xml では GMaven のグループ ID は「org.codehaus.groovy.maven」でしたが、この pom.xml では「org.codehaus.gmaven」になっています。
「Groovy 1.7.0 and GMaven 1.2 Multi Module Projects」からの変更点:
- <pluginManagement>, <dependencyManagement> 要素を使用せず、直接 <plugin>, <dependency> 要素を設定しています(子要素でこれらの設定を変更しない場合は、こちらの方が少しだけ簡潔)。
- マルチモジュールプロジェクトを対象にしていないので、<module>, <packaging> 要素を省略しています。
- project/build/defaultGoal を設定しています。
- ソースコードのエンコーディングを「UTF-8」にしています。
実際にこの pom.xml を書くのは面倒なので、上記の設定を行った pom.xml を POM プロジェクトとして作成してロカールリポジトリにインストールし、その POM を継承して pom.xml を作成すれば少しは楽かと・・・ どっちにしても面倒かな(笑)
- 作者: Dierk Konig,Andrew Glover,Paul King,Guillaume Laforge,Jon Skeet,杉浦孝,櫻井正樹,須江信洋,関谷和愛,佐野徹郎,寺沢尚史
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 146回
- この商品を含むブログ (121件) を見る