たくさんの自由帳

OSSRH から Central Portal へ移行する

投稿日 : | 0 日前

文字数(だいたい) : 2878

どうもこんばんわ、あつくて特にはないです!!

本題

とっくのとうにですが、OSSRHが終了して、後継のCentral Portalなるものに移行したらしい。
既存ユーザーの自動的な移行は最後まで行われなかったので、いまログインして移行を確認することになりそう。

環境

私はCentral Portal (OSSRH)へライブラリをアップロードするのにgradle-nexus/publish-pluginを使っています。
(io.github.gradle-nexus.publish-plugin)

他を使っている場合は多分役に立たない、、

Central Portal へログインしてみる

Sign inを押して、OSSRHの管理画面ログインで使ってたメアド、パスワードを入れる。
400 帰ってきたんやが、、    centralportal1

リロードしたらログインできてた、大丈夫そう?

centralportal2

ライブラリを公開用する build.gradle.kts を修正

ここに書いてあるようにやっていきます。

ルートの build.gradle.kts

まずはルートのbuild.gradle.ktsを開き、nexusUrlとsnapshotRepositoryUrlを指示通りに修正します。

nexusPublishing.repositories.sonatype {
    username.set(extra["ossrhUsername"] as String)
    password.set(extra["ossrhPassword"] as String)
    nexusUrl.set(uri("https://ossrh-staging-api.central.sonatype.com/service/local/")) // ここと
    snapshotRepositoryUrl.set(uri("https://central.sonatype.com/repository/maven-snapshots/")) // ここ
}

また、stagingProfileId.set(...)は使わないみたいなので、消して良さそうです。

それから、group変数?へ値をいれる必要があるみたいです。
versionは無くても動いてるけど、groupはないと失敗してしまった。

plugins {
    alias(libs.plugins.android.application).apply(false)
    alias(libs.plugins.android.library).apply(false)
    alias(libs.plugins.kotlin.android).apply(false)
    alias(libs.plugins.compose.compiler).apply(false)
    // akaricore ライブラリ公開で使う
    alias(libs.plugins.gradle.nexus.publish.plugin)
}

// io.github.gradle-nexus.publish-plugin で利用
// これを追加する
group = "io.github.takusan23"

local.properties

認証情報を更新します。OSSRHの頃のキーは使えないので。

↑からGenerate User Tokenを選んで、OKを選んで、Usernameの欄とPasswordの欄をコピーします。

centralportal3

centralportal4

GitHub Actions等を使っている場合は、そっちのシークレットも更新!

コマンドを修正する

一つ足す必要がある?

gradlew publishToSonatype

↓

gradlew publishToSonatype closeSonatypeStagingRepository

実行する

上記のgradleコマンドを実行してしばらく待ちます。
Gradleのコマンドパレット?機能

publish1

成功したら、Central PortalのView deploymentsの画面を開いて、おなじみのDropするかPublishするかが選べます。
Dropで破棄、Releaseで公開になります。

publish2

publish3

publish4

そういえば、OSSRHのときはCloseからのReleaseだったので、一つ工程が減った?

さぶん

多分動いてる、

おわりに

難しいって!

現状、AndroidやJavaだけじゃなく、Kotlin Multiplatform (Compose Multiplatform)のライブラリホスティングにもMaven Centralが使われていて、
この敷居の高さでは、他のマルチプラットフォームと戦うのは厳しいような気がします。

Kotlin Multiplatformを流行らせるにはこのライブラリホスティングをどうにかしないといけないと思います。
やったことないんで言うのあれだけど、npm publishとかもっと簡単なんじゃないですか・・?

公式で手順があるので、ちょっとだけ敷居は下がったの、かも。

おわりに2

環境変数の名前変えたなら、GitHub Actionsの方も直してくださいね(一敗)

お疲れ様でした、888