Maven はライブラリの依存関係さえ XML ファイルに記載しておけばビルド時に勝手に必要な jar ファイルをダウンロードしてきてくれるという超便利ツールです。
しかし、ダウンロードできるのはもちろんリポジトリに登録されているライブラリのみ。
デフォルトのリポジトリである Central Repository に登録されていない場合はローカルに手動で登録するか、Webサーバを立てて自前でリポジトリを構築する必要があります。
自分だけ、プロジェクト内だけで使うオレオレライブラリならローカルにインストール、または自前リポジトリで良いですが広く使って貰いたいライブラリはやはり Central Repository に登録してみたいところ。
セントラルリポジトリにライブラリを登録する方法は2つあって、一つは、jarファイルを単発で登録してもらう方法、もう一つは rsync でアクセス可能な状態にしておき、定期的に自分のサーバから吸い上げて貰う方法です。
毎回依頼するのは面倒なので今回は後者の方法で Twitter4J を登録してもらいました。
登録の仕方はもちろん本家に書いてあります。
・Maven - Guide to uploading artifacts to the Central Repository
rsync で同期して貰う方法をざっと要約すると以下の通り。
1. 最低限必要なメタデータは pom.xml に書いておく
具体的には modelVersion,groupId,artifactId,packaging,name,version,url,licenses,scm url,description,dependencies です。
特に注意しなければならないのは groupid が重複しないよう、プロジェクトをホストしているドメイン名から決定すること。
maven.apache.org であれば、パッケージの命名規則と同じく逆にならべて org.apache.maven になります。
2. 同期用のユーザを用意
OS の流儀に従って同期用にユーザを作ります。
習慣的に mavensync, mvnrepo, maven といったユーザ名が使われます。
何でも良いですが mavensync というユーザ名が一番多いようです。
2. 同期リクエスト用の csv フォーマットの情報を用意する
groupId: 例) org.apache.maven
location: 例) rsync over ssh 用: mavensync@shell.sourceforge.net:/home/groups/m/ma/maven-js-plugin/htdocs/m2repo または非セキュアな rsync 用: rsync://maven2.hortis.ch/releases
protocol: rsync_ssh または rsync
contactName: あなたのお名前
contactMail: emailアドレス(MLではないアドレス)
これらの情報をカンマ区切りで以下のように:
"org.apache.maven","rsync://maven2.hortis.ch/releases","rsync","John Doe","doe@doe.com",,
※最後の2つのカンマは意味不明ですが内部利用のために用意されているため省略可だそうです
3. 接続を許可するため公開鍵をサーバに登録
公開鍵はココにあります。
だいたいこんな感じ:
cd
mkdir .ssh
chmod 700 .ssh
echo "ssh-dss AAAAB3NzaC1kc3MAAACBAL9WxLqVn4DgS3pl6XrHQ467FLfhX+9ESYUQNsmqOxsubixtVVfiNFDpDI/LlSZSs9YcKr6XUMrVy58y3yg8pxR+T+4h3xGlUIhr/YJ60z02X7mSYNa8S2uVVL2Gou8z/GjDJnlY1GGzqXwKI07WdQ8QSAK8AYgAAZfVzn4VbCcjAAAAFQCnVrFfasrKOb6s8gteHeYyYPgndwAAAIEAhtVdf/cQ+KuzBQQqEhz9O7rqSh5GqZE177oY+2lPNpR8lKg2TRk87j3sh506gmpk82Gm4RvAOBOI6zEwLoOLsR+ucVSzUfhqgGanUworHVUnGQ7mIBqBq91JVVGORfVfK5/omi0ShIdhyZscf3vmeE3GiYtH8J3aUbGXxylkpLYAAACAOBk/ghnjuujhVo4sypxn0ATVLJ4ZcyHkl2vC4SE6VQ2XgYQv3P+NLbQtKoiNASifF1V0sOrzXxPzhPwWoh+8SxVqVLui7VC+2MKgd3etBJ3tllXIjgsxL9k8LxfDwsM+3dmICf28YQePRt4XkXADthdhOdkgG7MnpSidVmNBgDc= maven@beaver.codehaus.org" >> .ssh/authorized_keys2
chmod 600 .ssh/authorized_keys2
4. Jira に登録リクエスト用 issue を登録
Codehaus の Jiraに先ほど用意した csv を貼り付けて issue を作ります。
同時に、ドメインを保有している証拠を提示すること。
例えばドメイン内に自分の名前が掲載されている場所とか、whois のクエリ結果のページへのリンクとかです。
5. リポジトリメンテナンスのメーリングリストを購読
同期の状況を把握するためrepo-maintainers mailing listを購読するか、フィードを RSS リーダなどで購読します。
6. 待つ
数日で同期リストに取り込まれます。
以上です。
私はちょっとハマったのが2つあって、一つは groupid をドメイン名の逆向きにするのを忘れたこと。yusuke.homeip.net なので net.homeip.yusuke にすべきです。
幸い人手で登録してもらっているので、「おいおい、ちゃんと逆順にしてくれよ」と指摘してくれました。
もう一つは、同期が始まってしばらく"Host key verification failed." というエラーが発生していたこと。
何かこちらの設定に問題があるのかと疑いましたが、どうも向こう側の問題みたい。
Jira の issue がクローズされてから1日くらいたったら勝手に直りました。
ちなみにリポジトリの同期は4時間おきに行われているようです。
あとは手元の環境にバンドルを配置しておけば勝手にセントラルリポジトリに登録されるので楽ちん!
Twitter4J を Maven Central Repository に登録しました。
ウチの標準外リポジトリを参照しなくても依存関係を pom.xml に記述するだけでビルドできるようになります。
具体的には以下のように書きます。
<dependencies>
<dependency>
<groupId>net.homeip.yusuke</groupId>
<artifactId>twitter4j</artifactId>
<version>1.0.4</version>
</dependency>
...
</dependencies>
Central Repository に登録してもらう手順は Maven のサイトに記載されているのですがちょっと手間取りました。
知らなかったんですが、一度登録してもらうと rsync で以降自動的に拾ってくれる便利な仕組みが用意されているんですね。
日本語のインストラクションは見あたらなかったので後日まとめてみます。
・Twitter4J 自前 maven リポジトリを公開
HP と Red Hat が共同でオープンソースにまつわるセミナーを開きます。
・日本HP [HP/Red Hat] LinuxからJBossまで、企業におけるオープンソース活用最前線
Linux、JBoss とオープンソースの活用にご興味のある方は是非ご参加ください。
JRockit がダウンロードできなくなっていると以前書きましたが、フリー版の JRockit は静かにその生涯を終えようとしているのかもしれません。
JRockitのページはページの構成などはほとんど変化がなく更新された様子はないのですが、依然記載されていた、
という文句が静かに消されています。
以前の「なぜかダウンロードできなくなっている」、状況よりもはっきりとフリー版をなくそうとする意図が見えますね。
うーん、残念。
無理だと思いますが、フリー版をなくす前に Misson Control や JRockit Runtime Analyzer の開発成果を OpenJDK に反映させてくれないかしら?
続報:
中の人によると来週にでも Oracle 社のサイトで復活するかも・・とのこと。
Java からTwitterAPIをタイプセーフに操作できるライブラリ、Twitter4J 1.0.4 をリリースしました。
REST とか XML とか気にせず、手軽に Twitter API をいじることができます。
・Twitter4J
今回のリリースでは4月に追加された新しいメソッド群のサポートを追加しました。
修正内容の詳細はこちら。
ちなみに私のアカウントは http://twitter.com/yusukeyです。
お気軽に follow してください。
Twitter4J を使ってくれているらしいプロジェクト:
・Suittar! - Java-based Twitter Client.
Pure Java の Twitter クライアント。
・Mots - yet another Java Based Twitter Client
Suittar! よりシンプルな Pure Java クライアント。
・ブログなんだよもん - Twitterクライアント作ってみたよ!(TwitCafe)
Pure Java の Twitter クライアント。GUI に JavaFX を使うことを予定しているらしい!!
・TwitterMail.com - 8209 people sent 173236 messages to Twitter!
メールで Twitter の操作、通知ができるサービス。
・Twittercal — tweet your google calendar
Twitterで予定を簡単に管理できるサービス。
・Twitter Plugin - hudson - Hudson Wiki
継続ビルドシステム、Hudson のプラグイン。
・ぽすったー - cactusman日誌
Twitter の CUI クライアント。
・さぼったー 0.0.1.SNAPSHOT - 都元ダイスケ IT-PRESS
Eclipse のプラグイン。
・IntelliJ IDEA Plugins
・ 頼まれもしないのにSabotterを移植してみた - marsのメモ
さぼったーの IDEA 版。
・tweetPad
Twitter の発言をビジュアルに表現してくれるソフト。
ご利用ありがとうございます!
他にありましたらコメントで教えてください。
関連エントリ:
・Twitter4J 自前 maven リポジトリを公開
・Twitter4J 1.0.3 リリース
・Google Calendar と Twitter を連携 - Twittercal
・ Suitter Public beta 1.0
・メールで Twitter! - TwitterMail.com
・Twitter4J 1.0.2 リリース
・Twitter4J 1.0.1 リリース
・Twitter4J 1.0 リリース
リリース1.0.4 で追加されたメソッドは以下の通りです。
public final User unblock(java.lang.String id) throws TwitterException
public final boolean test() throws TwitterException
public final java.lang.String getDowntimeSchedule() throws TwitterException