Edited at
JavaDay 4

MavenCentralRepositoryへの登録

More than 1 year has passed since last update.


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 に貼り付け

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


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.github.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/

に行って検索してみます。

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


参考

OSSRH Guide

http://central.sonatype.org/pages/ossrh-guide.html

公式ガイドです

【最新版】Maven Central Repository へのライブラリ登録方法 #maven

http://samuraism.jp/diary/2012/05/03/1336047480000.html

https://yusuke.blog/2012/05/03/689

URLのリンクが切れているものがありますが、基本的にこの方法でいけました

DBUtils3

https://github.com/tamurashingo/dbutils3

自作のライブラリです。DropWizardでJDBIするときに使っています。