Gradle 6.0.1のMaven Publishプラグインを使ってパッケージをMaven Centralへリリースしようとしたところ以下のエラーで失敗してしまった。
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で追加されたのだが、Nexus(Maven Centralのリポジトリ・マネージャ)側にmaven-metadata.xml
のSHA-256/SHA-512チェックサムがあるとリリースに失敗する問題があったということらしい(2020年3月現在未解決)。
暫定的な回避策は2つ提示されている。
回避策①:チェックサムを手動削除
Staging repositoryでclose処理する前にアップロードしたファイルの中からmaven-metadata.xml.sha256
とmaven-metadata.xml.sha512
を消す。
試していないがNexus管理画面のContentタブでアップロードしたファイルの一覧が閲覧出来るのでおそらくそこで削除が出来るのだろう。
回避策②:チェックサムを無視するフラグを有効化
Gradle 6.0.1で追加されたシステム・プロパティorg.gradle.internal.publish.checksums.insecure
にtrue
を設定する。これによりSHA-256/SHA-512のチェックサムがアップロードされなくなる。
プロジェクト直下のgradle.properties
に次の行を加えると良い。
systemProp.org.gradle.internal.publish.checksums.insecure=true