知っておくべき用語
Sonatype
Maven Central Repository を管理している会社
Sonatype OSSRH (OSS Repository Hosting)
Sonatype 社の製品である Nexus を使用したオープンソースのレポジトリホスティングサービスで Maven Central Repository への登録はここから行う
Sonatype JIRA
Sonatype OSSRH へのプロジェクト登録権限を申請する Web サイト
手順
- GitHub にソースコードを Push
- Sonatype JIRA でアカウント登録
- Sonatype JIRA でプロジェクトの登録申請
- pom.xml を Maven Central Repository の要件にあわせて修正
- GPG の鍵を用意
- settings.xml に Sonatype JIRA のアカウント設定
- Sonatype OSSRH にデプロイ
- Sonatype OSSRH でリリース
- やったね、おめでとう!
1. GitHub にソースコードを Push
まずは公開したいプロジェクトのソースコードを GitHub に Push しましょう。
2. Sonatype JIRA でアカウント登録
Maven Central Repository に直接ソースコードをアップロードすることはできません。まずは Sonatype OSSRH にソースコードをアップする必要があるのですが、そのためには Sonatype JIRA で申請が必要です。
下記の URL からアカウントを登録しましょう。
https://issues.sonatype.org/secure/Signup!default.jspa
3. Sonatype JIRA でプロジェクトの登録申請
アカウント登録が完了したら、ページ上部の「Create」のボタンからプロジェクトの登録申請を行ないます。
英語で記載する必要がありますが、ちょっとなのでがんばる。
Project: | Community Support - Open Source Project Repository Hosting を選択 |
Issue Type: |
New Project を選択
|
Summary: | 公開するソースコードのプロジェクト名を書く |
Description: | 公開するソースコードの説明を書く |
Group Id: | pom.xml に指定した <groupId> を書く |
Project URL: | GitHub のURLを書く |
SCM url: | GitHub の Clone URL を書く |
Username(s): | 他の人と指定した Group Id に対して権限を共有したい場合はここに Sonatype JIRA のアカウント名を書く |
Already Synced to Central: | No を選択 |
記入内容に問題なければ、2, 3日で登録完了のコメントがきます。
4. pom.xml を Maven Central Repository の要件にあわせて修正
Maven Central Repository にプロジェクトを登録するには、pom.xml の書き方にお決まりがあるので、下記の URL を参考に必要事項を設定する。
http://central.sonatype.org/pages/requirements.html (公式ドキュメント)
ざっくりいえば、こんな感じ。
- <groupId> <artifactId> <version> をきちんと書く
※ここで指定する groupId は Sonatype JIRA で申請した際の groupId と同じでなければいけません - <name> <description> をきちんと書く
- <license> にソースコードのライセンスをきちんと書く
- <developers> に開発者の情報をきちんと書く
- <scm> に GitHub のアクセス情報をきちんと書く
5. GPG の鍵を用意
公開するファイルは GPG で署名してやる必要あります。GPG の公開鍵、秘密鍵のペアを作成して、公開鍵を keyserver にアップしましょう。
http://central.sonatype.org/pages/working-with-pgp-signatures.html (公式ドキュメント)
自分の場合は Windows なので、Gpg4win を使いました。
http://www.gpg4win.org/
File > New Certificate... から、Create a personal OpenPGP key pair を選択して公開鍵と秘密鍵のペアを作ります。
鍵のペアを作ったら、keyserver に公開鍵を登録します。
が、その前に Sonatype OSSRH が参照する keyserver の情報を事前に登録しておかなければいけません。
Settings > Configure Kleopatra... > Directory Services に keyserver の情報を登録しましょう。
Scheme: | hkp |
Server Name: | keyserver.ubuntu.com |
Server Port: | 11371 |
OpenPGP: |
チェックを ON にする
|
keyserver の登録ができたら、公開鍵を登録します。
作成した証明書を右クリックして、Export Certificates to Server... を実行すれば OK。
6. settings.xml に Sonatype JIRA のアカウント設定
Sonatype OSSRH にデプロイできるように、settings.xml にアカウント情報を設定します。
settings.xml はユーザ毎の Maven の設定ファイルで、~/.m2/settings.xml に配置します。
<span class="redactor-invisible-space"><settings> <servers> <server> <id>ossrh</id> <username>your-jira-id</username> <password>your-jira-pwd</password> </server> </servers><span class="redactor-invisible-space"> </settings></span></span>
your-jira-id と your-jira-pwd には Sonatype JIRA 登録時の ID とパスワードを設定します。
7. Sonatype OSSRH にデプロイ
ようやく、デプロイの準備が整いました。下記のコマンドで Sonatype OSSRH にデプロイしましょう。
mvn clean deploy
8. Sonatype OSSRH でリリース
Sonatype OSSRH にデプロイしてしばらく待てば自動で Maven Central Repository に同期されるようですが、せっかちな人は https://oss.sonatype.org/ にログインして、リリース作業を行ないましょう。
ログイン後、Build Promotion > Staging Repositories を選択、リストから自分のレポジトリを選択して、Close, Release の順でボタンをおせば、リリース作業完了です。
リリース作業がうまくいくと、下記の件名でメールが2通きます。
Nexus: Promotion Completed
Nexus: Staging Complete
1時間ほどで Maven Central Repository に同期されます。
9. やったね、おめでとう!
ちょっと手順が多くて面倒ですが、
http://search.maven.org/ で自分のプロジェクトが見つかるとうれしいですね!!