S-JIS[2023-06-18/2024-01-30] 変更履歴

Sonatype

ソフトウェアのMavenセントラルリポジトリーへの公開方法のメモ。


概要

Sonatypeは、Maven Central Repositoryの管理と運営を行っている会社。

Mavenセントラルリポジトリーでソフトウェアを公開したい場合、Sonatypeに依頼する形となる。
依頼と言っても、ほとんど自動的に進むようだ。


Mavenセントラルリポジトリーへの公開手順

Mavenセントラルリポジトリーに自分のソフトウェアを公開する手順。[2023-06-22]

  1. MavenのgroupIdをSonatypeに新規登録する。
    1. groupIdを登録するにはSonatypeのアカウントが必要になるので、System Dashboard - Sonatype JIRAから「Sign up」で作成する。
  2. 自分のソフトウェアをSonatypeのステージング環境にpublishする
    1. publishするにはGradleのmaven-publishプラグインを使用する。
    2. また、電子署名が必要となるのでGradleのsigningプラグインを使用する。
      1. 電子署名をする為にGnuPGをインストールして鍵を作り、鍵サーバーに登録しておく必要がある。
  3. Sonatypeのステージング環境からMavenセントラルリポジトリーへリリースする

Group Idの新規登録

MavenのgroupIdを新規に登録するには、Sonatype JIRAのissueを新しく作る。

  1. System Dashboard - Sonatype JIRAにログインする。
    1. アカウントが無い場合は「Sign up」から作成する。これはメールアドレスだけあれば簡単に作れる。自分の場合、ログイン後に設定で「日本語」に変更した。
  2. Sonatype JIRAのダッシュボードの上部にあるメニューバーから「作成」をクリックする。
  3. プロジェクトに「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」のリンクをクリックすればよい。
  4. 項目を入力してissueを登録する。
  5. たぶんURLにGitHubを指定した場合、そのアカウントが当人のものかどうかの確認が入る。
    1. issueに「Create a temporary, public repository called https://github.com/アカウント名/OSSRH-XXXXX to verify github account ownership.」が表示されていたら、GitHubで公開リポジトリー「OSSRH-XXXXX」を作成する。
    2. issueのステータスをOpenに変える。
      1. プルダウンの「Waiting for Response」を「オープン」に変更する。
  6. しばらく待つ。(一応、2営業日ということになっているようだ)
  7. これにより、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]

  1. Gradleのpublishコマンド(maven-publishプラグイン)を実行して、Sonatypeのステージング環境にソフトウェアをアップロードする。
    $ ./gradlew publish
  2. Sonatypeのリポジトリーマネージャー(nexus repository manager)にログインする。(アカウントはSonatype JIRAのものと同じ)
  3. 左側のメニューの「Build Promotion」の中の「Staging Repositories」をクリックする。( 一覧が表示されるのが微妙に遅いので、数秒待つ必要があるかも)
  4. 自分がpublishしたものを選択し、上部の「Close」を押す。(押してから数秒待つ)
  5. エラーが無ければStatus欄がclosedになり上部の「Release」が押せるようになるので、publishしたものを選択して「Release」を押す。(「Release」が無効なままだったら、 ブラウザーの画面リフレッシュをしてみる)
  6. 数時間待つと、Mavenセントラルリポジトリーで自分のソフトウェアが公開される。

Forbidden

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目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま