オレオレ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と限られていますが、(クラスファイルを作るわけでもないですし)そんなに容量を食うリソースは入っていないので、あまり問題になることはないでしょう。