S-JIS[2023-06-18/2024-01-30]
変更履歴
Sonatype
ソフトウェアのMavenセントラルリポジトリーへの公開方法のメモ。
Sonatypeは、Maven Central Repositoryの管理と運営を行っている会社。
Mavenセントラルリポジトリーでソフトウェアを公開したい場合、Sonatypeに依頼する形となる。
依頼と言っても、ほとんど自動的に進むようだ。
Mavenセントラルリポジトリーに自分のソフトウェアを公開する手順。[2023-06-22]
- MavenのgroupIdをSonatypeに新規登録する。
- groupIdを登録するにはSonatypeのアカウントが必要になるので、System
Dashboard - Sonatype JIRAから「Sign up」で作成する。
- 自分のソフトウェアをSonatypeのステージング環境にpublishする。
- publishするにはGradleのmaven-publishプラグインを使用する。
- また、電子署名が必要となるのでGradleのsigningプラグインを使用する。
- 電子署名をする為にGnuPGをインストールして鍵を作り、鍵サーバーに登録しておく必要がある。
- Sonatypeのステージング環境からMavenセントラルリポジトリーへリリースする。
MavenのgroupIdを新規に登録するには、Sonatype JIRAのissueを新しく作る。
-
System
Dashboard - Sonatype JIRAにログインする。
- アカウントが無い場合は「Sign
up」から作成する。これはメールアドレスだけあれば簡単に作れる。自分の場合、ログイン後に設定で「日本語」に変更した。
-
Sonatype JIRAのダッシュボードの上部にあるメニューバーから「作成」をクリックする。
- プロジェクトに「Community Support - Open Source Project Repository
Hosting」、課題タイプに「New Project」を選択する。
他の選択肢を選んで「If you wish to publish your components to Maven Central, please
create a New Project issue」と表示された場合、「New Project
issue」のリンクをクリックすればよい。
- 項目を入力してissueを登録する。
- たぶんURLにGitHubを指定した場合、そのアカウントが当人のものかどうかの確認が入る。
- issueに「Create a temporary, public repository called
https://github.com/アカウント名/OSSRH-XXXXX to verify github
account ownership.」が表示されていたら、GitHubで公開リポジトリー「OSSRH-XXXXX」を作成する。
- issueのステータスをOpenに変える。
- プルダウンの「Waiting for Response」を「オープン」に変更する。
- しばらく待つ。(一応、2営業日ということになっているようだ)
- これにより、publishできるようになる。
issueに登録する項目は、hishidama Embulk pluginsの場合は以下のように入力した。
項目 |
例 |
備考 |
要約 |
hishidama Embulk plugins |
タイトル |
説明 |
The Embulk plugins created by hishidama. |
description |
添付ファイル |
|
(無し) |
Group Id |
io.github.hishidama.embulk |
MavenのgroupId |
Project URL |
https://github.com/hishidama/embulk-plugins |
|
SCM url |
https://github.com/hishidama/embulk-plugins.git |
GitHubのclone url |
Username(s) |
|
(無し) |
Already Synced to Central |
No |
|
初回のリリースが出来たことを確認したら、pushできた旨のコメントをissueに入れる。[2023-06-22]
これにより、issueがクローズされる。
MavenのgroupIdの新設が承認されたら、ソフトウェアを公開できるようになる。[2023-06-22]
- Gradleのpublishコマンド(maven-publishプラグイン)を実行して、Sonatypeのステージング環境にソフトウェアをアップロードする。
$ ./gradlew publish
- Sonatypeのリポジトリーマネージャー(nexus repository manager)にログインする。(アカウントはSonatype JIRAのものと同じ)
- 左側のメニューの「Build Promotion」の中の「Staging Repositories」をクリックする。(
一覧が表示されるのが微妙に遅いので、数秒待つ必要があるかも)
- 自分がpublishしたものを選択し、上部の「Close」を押す。(押してから数秒待つ)
-
Closeボタンを押すとpomの内容が正しいかどうかがチェックされ、エラーがあるとActivityタブで表示されるツリーに赤い印が付いたエラーメッセージが表示される。(
大抵はpomの記述内容の不備)[2023-10-01]
- エラーがあった場合
- エラー解消の為にbuild.gradle等を修正し、再度publishする。
なお、「Staging Repositories」のUpdated欄(更新日時)は、publishしただけでは変わらない。
- 再度Closeボタンを押す。(ここでUpdatedが変わる)
- これをエラーが無くなるまで繰り返す。
- エラーが無ければStatus欄がclosedになり上部の「Release」が押せるようになるので、publishしたものを選択して「Release」を押す。(「Release」が無効なままだったら、
ブラウザーの画面リフレッシュをしてみる)
- 数時間待つと、Mavenセントラルリポジトリーで自分のソフトウェアが公開される。
publishしようとしたら、Forbiddenのエラーが出た。[2024-01-30]
$ ./gradlew publish
〜
* What went wrong:
Execution failed for task ':publishMavenJavaPublicationToMavenRepository'.
> Failed to publish publication 'mavenJava' to repository 'maven'
> Could not PUT 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/io/github/hishidama/embulk/embulk-output-tsurugidb/0.1.4/embulk-output-tsurugidb-0.1.4.jar'. Received status code 403 from server: Forbidden
〜
BUILD FAILED in 33s
確認の為にブラウザーからhttps://s01.oss.sonatype.org/#welcomeに
ログインしようとしたら、以下のようなエラーダイアログが表示された。
Incorrect username, password or no permission to use the Nexus User Interface.
Try again.Forbidden
よく分からないのでJIRAで状況を説明したら、ログインできるようにしてもらえた。
Maven目次へ戻る /
技術メモへ戻る
メールの送信先:ひしだま