オレオレMaven Archetypeを作って、Github上のMavenリポジトリに公開する

以前から素振りがてら、Mavenアーキタイプは作っておきたかったのですよね。ということで、自分用アーキタイプ、名づけて "ikikko-archetype-quickstart" を作ってみました。

Archetype Catalogも作ってるので、catalogを指定すれば今回作成したArchetypeを利用することができます(カタログの参照URLについては後述)。結果はこんな感じ。

islandcity:private ikikko$ mvn archetype:generate -DarchetypeCatalog=http://ikikko.sourceforge.jp/

(中略)

Choose archetype:
1: http://ikikko.sourceforge.jp/ -> ikikko-archetype-quickstart (-)
Choose a number: : 1
Define value for property 'groupId': : org.ikikko
Define value for property 'artifactId': : helloIkikkoArchetype
Define value for property 'version':  1.0-SNAPSHOT: : 
Define value for property 'package':  org.ikikko: : 
Confirm properties configuration:
groupId: org.ikikko
artifactId: helloIkikkoArchetype
version: 1.0-SNAPSHOT
package: org.ikikko
 Y: : y
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.509s
[INFO] Finished at: Tue May 03 22:59:40 JST 2011
[INFO] Final Memory: 7M/81M
[INFO] ------------------------------------------------------------------------


Maven Archetypeを作成

大元の設定は、自分用Maven Archetype - 都元ダイスケ IT-PRESSパクり 参考にさせてもらいました。ただ、それだけじゃ芸がないので、Groovyと連携するためにGMavenの設定を追加*1。合わせて、Archetype Catalogを作成しておきました。

ちなみに、Archetype Catalog関連でいくつか些細な問題が。

1つ目は、Github上のカタログはArchetype Pluginからは参照できなかったこと。Github上のリソースはHTTPSで提供されるのですが、どうやらHTTPSはサポートされてないみたいです。仕方ないので、別の場所(とりあえず、今はSourceforge)にホストしてそこを参照するようにしました。

2つ目は、M2Eclipseからリモートのカタログが読めないこと。M2Eを最新にしても治らなかったし、原因ちょっとよく分かっていません。仕方ないので、今はコマンドラインからmvnコマンド叩いて、その後にEclipseにインポートしてます。

今回の作業に直接関わることじゃないけど、archetype:crawlの挙動にも注意。公式ドキュメントにもあるように、デフォルトだとリポジトリ直下に作られてしまいます。↓のようにオプションを指定するか、面倒だったらデフォルト指定で実行した後、出来上がったカタログを手動で移動しましょう。

GithubにMavenリポジトリを公開

細かいやり方は、Github を Maven 公開リポジトリにする - Ussy Diary(2010-09-12)参照。

Githubのフリープランでは容量が300Mと限られていますが、(クラスファイルを作るわけでもないですし)そんなに容量を食うリソースは入っていないので、あまり問題になることはないでしょう。

*1:Groovyは1.8が出たのですが、GMavenはまだ1.7までしか対応してません。JIRAのチケットは http://jira.codehaus.org/browse/GMAVEN-88 に上がっているので、早く対応されないかなー