maven central にリリースしてみた
Maven central にあげようと以前奮闘してみたが、うまく行かずに諦めていた。
アカウントの登録まではいっていたのだが、なんかうまくいかなくて諦めていたのだ。 が、モリスさんのエントリを見ながら pom を設定していったら今回はなぜかうまく出来た。 http://d.hatena.ne.jp/tagomoris/20141028/1414485679
Maven central は難しいか?
Maven central にアップロードするまでに間には以下のようなステップが必要になる。
- JIRA にサインアップする
- JIRA でパッケージに対するアップロード権限を要求する
- gpg の設定をする
- settings.xml/pom.xml をセットアップする
- mvn release:prepare release:perform する
このうち、最初の JIRA へのサインアップは難しいことはない。
Step2 は、要求したあと使えるようになるまでの間に若干の英語でのやりとりが必要なのでたいがいダルい。 「このドメイン本当にお前のなの?」って聞かれたりする。パッケージに対するアップロード権限の要求は、me.geso.avans のようなプロジェクトごとにする必要があると思い込んでいて、いちいちこのやりとりするのめんどくさすぎるなーと思ってたのだが、実際には me.geso 以下に対するアップロード権限をもらえるので、めんどくさいのは最初の一回だけである。ドメイン名を持っていない場合には com.github.gfx のようなパッケージ名で申請すればよい。
gpg の設定は、やや面倒だがググれば情報出てくるので、まあやるしかない。
settings.xml/pom.xml の設定が、僕はどうやったらいいかよくわからなくてはまってたんだけど woothee のレポジトリみながらやったらなんかうまく行った。 woothee は、なんか色々ごちゃごちゃやってるので、僕の pom.xml を見ながら設定してもいいと思います。 https://github.com/tokuhirom/webscrew/blob/master/pom.xml
mvn release:prepare release:perform
がちょっと難しくて、だいぶハマった。
基本的にはこれが minil release
みたいなものになっている。タギングとかそういうのもひと通りやってくれる。
なっているのだけど、ちょっと癖があるというか戦略が minil とかと違っている。
なにしろ2ステップでリリースするわけなので。
release:prepare をすると、前処理が行われて、なんか謎のテンポラリファイルが幾つかできる。ここでバージョンの bump とかもしてくれる。
終わったら mvn release:perform
すればよろしい。うまくいけばアップロードされる。
なんか dirty な状態になったら、混乱するんだけど mvn release:clean
すれば元に戻せるので、冷静に元に戻したらいい。
最初の一個あげるまでがちょっと面倒だけど、よく考えると CPAN とそんなにすごく変わるわけではない、と思う。CPAN に最初にあげたのとか10年ぐらい前だから難しかった記憶も得にないんだけどね。CPAN もメールおくって承認されないとアップロードできないし。
gradle なら楽か?
結局、gradle に maven central にアップロードするためには相応の設定が必要なので、あまり手間は変わらないと思う。あと gradle の maven-publish プラグインはまだ Incubator だし。。
コミュニティ的なものが無いのが辛い
mvn release 関連で、何か質問したいと思っても、どこで聞いたらいいのやら。 日本語の forum 的なものが存在しないんで、それが辛い気がした。
あと、ネットに転がってる記事を見ても、なんか情報が恐ろしく古いのが多くて。。
そういうわけで、、
https://tokuhirom.github.io/maven/ のレポジトリはしばらくしたら消すので、よろしくお願いします!
こちら利用している方いらっしゃいましたら今のうちに新しいバージョンに依存するように変更してください。