桜技録

🐈🐈🐈🐈🐘

Maven CentralのRepository Writableエラー

Gradle 6.0.1のMaven Publishプラグインを使ってパッケージをMaven Centralへリリースしようとしたところ以下のエラーで失敗してしまった。

f:id:sciencesakura:20200329212120p:plain

Event: Failed: Repository Writable

typeId         RepositoryWritePolicy
failureMessage Artifact updating: Repository ='releases:Releases' does not allow updating artifact='/com/sciencesakura/dbsetup-spreadsheet/maven-metadata.xml.sha512'
failureMessage Artifact updating: Repository ='releases:Releases' does not allow updating artifact='/com/sciencesakura/dbsetup-spreadsheet/maven-metadata.xml.sha256'

探したところ既にissueが立っていた。

https://issues.sonatype.org/browse/MVNCENTRAL-5276

https://issues.sonatype.org/browse/NEXUS-21802

チェックサムに使用するハッシュ関数としてSHA-256とSHA-512がGradle 6.0で追加されたのだが、NexusMaven Centralのリポジトリ・マネージャ)側にmaven-metadata.xmlのSHA-256/SHA-512チェックサムがあるとリリースに失敗する問題があったということらしい(2020年3月現在未解決)。

暫定的な回避策は2つ提示されている。

回避策①:チェックサムを手動削除

Staging repositoryでclose処理する前にアップロードしたファイルの中からmaven-metadata.xml.sha256maven-metadata.xml.sha512を消す。

試していないがNexus管理画面のContentタブでアップロードしたファイルの一覧が閲覧出来るのでおそらくそこで削除が出来るのだろう。

回避策②:チェックサムを無視するフラグを有効化

Gradle 6.0.1で追加されたシステム・プロパティorg.gradle.internal.publish.checksums.insecuretrueを設定する。これによりSHA-256/SHA-512のチェックサムがアップロードされなくなる。

プロジェクト直下のgradle.propertiesに次の行を加えると良い。

systemProp.org.gradle.internal.publish.checksums.insecure=true