GradleでBintrayを経由してMaven Centralに成果物を公開する
Maven Centralに成果物を公開するには、OSS Sonatype Nexusに成果物をアップロードする方法が広く知られていますが、Bintrayを経由してリリースする方法もあります。この方法には以下のメリットとデメリットがあります。
- メリット
- デメリット
- Bintrayに鍵ペアを預ける必要があります。これが気持ち悪い人にはおすすめできません。
- BintrayでOSS Sonatype Nexusのパスワードを入力する必要があります。これが気持ち悪い人にはおすすめできません。
本稿では、GradleからBintrayに成果物をリリースし、さらにMaven Centralにリリースする方法を説明します。ビルドスクリプトの入ったサンプルプロジェクトを用意したので自由に使ってください。使い方は後で説明します。
手順の概要
前準備
- Sonatype OSSRHにプロジェクトを申請する。
- Bintrayを設定する。
- ビルドスクリプトを書く。
毎回のリリース
- GradleからBintrayに成果物をアップロードする。
- BintrayにアクセスしてPublishをクリックする。
- BintrayでSync to Maven Centralを実行する。
前準備
1. Sonatype OSSRHへの申請
まず、Maven Centralに登録するための申請が必要です。
- Sonatype OSSRHにプロジェクトを申請します。
- JIRAのアカウントを作成してチケットを申請します。
- 適当な英語でもちゃんと対応してくれます。参考までに、私がGradle SSH Pluginを申請した時のチケットはこちらです。
- 詳細はOSSRH Guideを参照してください。
- 鍵ペアを鍵サーバに登録します。
- GnuPGというツールを使います。HomeBrewでは
brew install gnupg
でインストールできます。 - 手順をまとめると
gpg --gen-key
で鍵ペアを生成する。gpg --keyserver hkp://pool.sks-keyservers.net --send-keys
で鍵サーバに登録する。
- 詳細は Working with PGP Signatures を参照してください。
- GnuPGというツールを使います。HomeBrewでは
2. Bintrayの設定
Bintrayに鍵ペアを登録します。
- アカウントの設定で鍵ペアを登録します。
- 公開鍵は
gpg --export -a
で表示できます。 - 秘密鍵は
gpg --export-secret-key -a
で表示できます。
- 公開鍵は
- リポジトリの設定で Sign this repository's files with key from: user にチェックを入れます。これにより、Bintrayに成果物をアップロードすると自動的に署名が付与されるようになります。
Bintrayで新しいパッケージを作成します。デフォルトではmavenというリポジトリが用意されているので、Add New Packageをクリックしてパッケージを作成します。パッケージの名前は公開しようとしている成果物の名前にしておきます。
3. ビルドスクリプトの作成
以降はビルドスクリプトの入ったサンプルプロジェクトを使う前提で説明します。成果物に合わせて以下を修正してください。
- build.gradleの
dependencies
を依存関係に合わせて直す。 - gradle.propertiesに書いてあるパッケージ名などを直す。
また、ホームディレクトリの~/.gradle/gradle.properties
にBintrayのAPIキーを書いておきます。
bintrayUser=example bintrayKey=secret
毎回のリリース手順
ここからは毎回のリリースで実施する手順です。
1. GradleからBintrayに成果物をアップロード
まず、Bintrayに成果物をアップロードします。この時、versionプロパティでバージョンを渡します。
./gradlew -Pversion=0.1.2 bintrayUpload
BUILD SUCCESSFULと表示されれば成功です。
2. BintrayにアクセスしてPublishをクリック
Bintrayにアクセスすると以下のメッセージが表示されます。
Notice: you have 8 unpublished items for this package (expiring in 23 hours) Discard | Publish
PublishをクリックするとBintrayで公開されます。
3. BintrayでSync to Maven Centralを実行
Bintrayのパッケージ画面にMaven Centralというタブがあるので、これをクリックします。するとSonatype Nexusのログイン情報を入力する画面が表示されるので、IDとパスワードを入力します。Syncをクリックすればバックグラウンドで同期が始まります。
なお、Maven Centralに公開するにはまずJCenterに公開する必要があるので、初回のみJCenterの申請が必要です。初回はその旨のメッセージ表示されます。本当は前準備でやることですが、説明の都合上ここに書いておきます。