Tagbangers Blog

GitHub で公開したソースコードを Maven Central Repository に登録する手順

知っておくべき用語

Sonatype
Maven Central Repository を管理している会社

Sonatype OSSRH (OSS Repository Hosting)
Sonatype 社の製品である Nexus を使用したオープンソースのレポジトリホスティングサービスで Maven Central Repository への登録はここから行う

Sonatype JIRA
Sonatype OSSRH へのプロジェクト登録権限を申請する Web サイト

手順

  1. GitHub にソースコードを Push
  2. Sonatype JIRA でアカウント登録
  3. Sonatype JIRA でプロジェクトの登録申請
  4. pom.xml を Maven Central Repository の要件にあわせて修正
  5. GPG の鍵を用意
  6. settings.xml に Sonatype JIRA のアカウント設定
  7. Sonatype OSSRH にデプロイ
  8. Sonatype OSSRH でリリース
  9. やったね、おめでとう!

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 (公式ドキュメント)

ざっくりいえば、こんな感じ。

  1. <groupId> <artifactId> <version> をきちんと書く
    ※ここで指定する groupId は Sonatype JIRA で申請した際の groupId と同じでなければいけません
  2. <name> <description> をきちんと書く
  3. <license> にソースコードのライセンスをきちんと書く
  4. <developers> に開発者の情報をきちんと書く
  5. <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/ で自分のプロジェクトが見つかるとうれしいですね!!