MavenCentralRepositoryへの登録

  • 21
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

MavenCentralRepositoryへの登録

Motivation

せっかくライブラリを作ったのでどこからでも使えるように登録してみようと思いました。

手順

  1. 事前準備
    1. Javadocとソースの生成
    2. 公開鍵の登録
    3. 署名
  2. 登録
    1. チケットの作成
    2. デプロイ
    3. リリース
    4. チケットクローズ
    5. 2時間待つ

1. 事前準備

1.1. Javadocとソースの作成

ビルド時にJavadocとソースが生成されるようにします。

<build>
  ...略...
  <!-- generate source -->
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.4</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

  <!-- generate javadoc -->
  <plugin>
    <groupId>org.apache.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.10.1</version>
    <configuration>
      <show>package</show>
      <source>1.7</source>
      <encoding>UTF-8</encoding>
      <docencoding>UTF-8</docencoding>
      <charset>UTF-8</charset>
      <links>
        <link>http://docs.oracle.com/javase/7/docs/api/</link>
      </links>
    </configuration>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

  ...略...
</build>

Javadocコメントについて

  • がんばって英語で書きます
  • Java標準ライブラリのJavadocが参考になります
  • 文法はGinger(http://www.getginger.jp/)でチェックできます

1.2. 公開鍵の登録

1.2.1. 公開鍵の生成

gpgを使って生成していきます。

gpg --gen-key
項目 設定値
鍵の種類 RSA and DSA
鍵の長さ 2048
有効期限 期限なし
Real name Tamura Shingo
Email address (略)
Comment なし

1.2.2. 公開鍵サーバへの登録

gpgから直接登録する方法と、Web画面経由で登録する方法があります。

直接登録編
gpg --key-server hkp://gpg.mit.edu --send-keys XXXXX
ブラウザ経由での登録編
gpg -a --export XXXX

出力結果を http://pgp.mit.edu に貼り付け

Screen Shot 2014-12-04 at 01.33.15.png

こんな感じで登録されます。

1.3. 署名

普通にpom.xmlに書くと、Travis CI等で実行する際に鍵がないよ!といってエラーになるので、特殊なオプションを与えたときだけ署名するようにします。

<profiles>
  <profile>
    <id>release-sign-artifacts</id>
    <!-- for release -->
    <!-- mvn -DperformRelease=true deploy -->
    <activation>
      <property>
        <name>performRelease</name>
        <value>true</value>
      </property>
    </activation>
    <build>
      <plugins>
        <!-- generate PGP Signature -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>1.5</version>
          <executions>
            <execution>
              <id>sign-artifacts</id>
              <phase>verify</phase>
              <goals>
                <goal>sign</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

参考
http://stackoverflow.com/questions/14825039/suppressing-gpg-signing-for-maven-based-continous-integration-builds-travis-ci/14869692#14869692

2. 登録

2.1. チケットの作成

2.1.1. JIRAアカウントの作成

まず、JIRAアカウントを作成します。

https://issues.sonatype.org/secure/Signup!default.jspa
に行って申請フォームを埋めます
Full Nameは自分の名前、Usernameは希望するアカウントです。
Usernameに空白を入れるとその後のスクリプトが動かないようなので、空白を入れないようにしましょう。
(一回やってしまいました・・・・)

2.1.2. プロジェクトチケットの作成

https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
に行ってチケットを発行します。

実際に発行したチケットです。
https://issues.sonatype.org/browse/OSSRH-12241

項目 記入した値 備考
Summary dbutils3 ライブラリの名前
Description README.mdに書いた内容を1行で
Group Id com.gitub.tamurashingo GitHub上に置いたので
Project URL https://github.com/tamurashingo/dbutils3 README.mdでそれらしく見えるから大丈夫
SCM url https://github.com/tamurashingo/dbutils3.git
Username(s) なし 共同コミッターみたいな人がいれば書く
Alredy Synced to Central No 初回登録なので

2.2. デプロイ

リポジトリが作成されたらメールが来ます。そうするとデプロイが可能になります。デプロイ先をpom.xmlに追加します。

<distributionManagement>
  <repository>
    <id>sonatype-nexus-staging</id>
    <name>Nexus Release Repository</name>
    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
  </repository>
</distributionManagement>

おもむろにデプロイをします。

mvn -DperformRelease=true deploy

たまーに調子が悪く、アップロードに失敗するときがありますが、やり直せば大丈夫です。

2.3. リリース

デプロイが完了したらWeb画面からリリース作業を行います。

2.3.1. ログイン

https://oss.sonatype.org/

に行き、右上の Log In を押します。
ID/PasswordはJIRAのものと同じです。

2.3.2. リポジトリ検索

左側メニューの Build Promotion から Staging Repositories を選択します。右側の画面に自分のリポジトリが出るのでそれを選択します。

2.3.3. クローズ処理

Close ボタンを押します

2.3.4. リリース処理

Release ボタンが押せるようになるので、Release ボタンを押します。

デプロイ時のアップロードに失敗したりすると、失敗したリポジトリが残っていたりするため Relase ボタンが押せなかったりします。そういう時は失敗したリポジトリを選択して Drop を押し、不要なリポジトリを削除します。そうすると Release が押せるようになります。

2.4. チケットクローズ

JIRAのコメントにリリースした旨を記載します。そうするとJIRAがクローズされます。

2.5. 2時間待つ

2時間ほど待つと Central Repository と同期が取れるようなので、
http://search.maven.org/
に行って検索してみます。

Screen Shot 2014-12-04 at 01.35.00.png

こういう感じで登録されます。

参考

OSSRH Guide
http://central.sonatype.org/pages/ossrh-guide.html
公式ガイドです

【最新版】Maven Central Repository へのライブラリ登録方法 #maven
http://samuraism.jp/diary/2012/05/03/1336047480000.html
URLのリンクが切れているものがありますが、基本的にこの方法でいけました

DBUtils3
https://github.com/tamurashingo/dbutils3
自作のライブラリです。DropWizardでJDBIするときに使っています。