備忘も兼ねて、 Maven Central Repository に Kotlin ライブラリを公開する際に参照したドキュメントや手順をまとめる。
詳細は以下の2つの資料に記載されている。
この資料はこれらの抜粋・再構成となる。
準備
Maven Central へのリポジトリ作成
https://central.sonatype.org/publish/publish-guide/ を参考に、 Maven Central にリポジトリを作成する。
- Sonatype にアカウントを作成する
- New Project チケットを作成する
New Project チケットを起票する際に、以下の情報が必要になる。
- Group ID
- 公開する予定のライブラリの URL
- 公開する予定のライブラリのソースコードをホストしている URL
私の場合は GitHub.com のアカウントを利用したので、 Group ID に io.github.hmiyado
を指定した。
GitHub.com を利用する場合は com.github.
始まりでないことに注意する。
チケットを作成すると、アカウントの所有権確認のため、チケットに対応する名前(OSSHR-XXXX
)の空リポジトリを作成するようコメントが来る。
それに対応すると、 Maven Central に自分のライブラリを公開するためのリポジトリを作成してもらえる。
このあたりのやりとりは Bot と行う。
ライブラリを公開するためのコード実装
実装はすべて .kts を前提とする。
https://docs.gradle.org/current/userguide/publishing_maven.html#publishing_maven:complete_example に全体のサンプルがあるので、これを眺めると全体感を掴みやすい。
大きく2点対応する必要がある。
- Maven Plugin の設定
- Signing Plugin の設定
Maven Plugin の設定
作成した Maven Central 上のリポジトリの認証情報も設定する必要がある。
GRADLE_HOME 下の gradle.properties
、デフォルトでは ~/.gradle/gradle.properties
に認証情報を置くと、複数のプロジェクトで再利用できる( 参考 )。
Signing Plugin の設定
プラグインの設定と同時に、署名の設定も必要。
署名には GnuPG を使う。
https://central.sonatype.org/publish/requirements/gpg/ を参考に鍵の生成と公開鍵のサーバーへの登録を行う。
署名に必要な設定は Maven Plugin での設定と同様、 GRADLE_HOME 下の gradle.properties
に記載しておく。
公開
- リポジトリへのアップロード
- Nexus Repository Manager 上での公開設定
リポジトリへのアップロード
Maven Plugin および Signing Plugin の設定が適切に完了していれば、 ./gradlew publish
の実行のみでOK。
Nexus Repository Manager 上での公開設定
https://central.sonatype.org/publish/release/ に詳細が記載されている。
大ざっぱな流れとしては以下の通り。
- アップロードしたリポジトリを Close する
- リポジトリの署名や内容が検証される
- 検証に通ったら Release する
Release 後、リポジトリが利用できるようになるまでに30分程度、リポジトリが Maven Central Repository Search に反映されるまでに4時間程度かかる。
以上の手順でライブラリを公開できる。