Gradleのsigningプラグインは、生成するjarファイル類の電子署名を行う。
signingプラグインは、生成するjarファイル類の電子署名を行う。
なお、電子署名を作成する為に、GnuPGを使って鍵を作っておく必要がある。
plugins {
id "maven-publish"
id "signing"
}
〜
signing {
〜
}
※Mavenセントラルリポジトリーにjarファイルをアップロードする際は、電子署名が必要となる。
GnuPGを使って鍵を作成する。
GnuPGはgpgコマンドで操作する。
自分の場合はWindowsなので、GnuPGのダウンロードサイトからWindows版のGnuPG(gpg4win-4.1.0.exe)をダウンロード・インストールした。
C:\Users\ユーザー\AppData\Roaming\gnupgの下に作られる)> gpg --full-gen-key
> gpg --list-keys
------------------------------------------------
pub rsa2048 2023-06-19 [SC]
4B12B38CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX> gpg --send-keys 4B12B38CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
> gpg --search-keys 4B12B38CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
> gpg --export-secret-keys -o ユーザーホーム/.gnupg/secring.gpg
> gpg --list-secret-keys --keyid-format short ------------------------------------------------ sec rsa2048/AC6AXXXX 2023-06-19 [SC] 4B12B38CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX↑AC6AXXXXが鍵ID。
Gradleのsigningプラグインで使用する為に、gradle.propertiesに鍵の情報を記載しておく。
signing.keyId=AC6AXXXX signing.password=鍵作成時のパスフレーズ signing.secretKeyRingFile=ユーザーホーム/.gnupg/secring.gpg // 旧Sonatype sonatypeUsername=アクセストークンのID sonatypePassword=アクセストークンのトークン // Maven Central Portal mavenCentralUsername=アクセストークンのユーザー名 mavenCentralPassword=アクセストークンのパスワード
signingプラグインでmaven-publishプラグインの設定を指定する。
plugins {
id "maven-publish"
id "signing"
}
〜
publishing {
publications {
mavenJava(MavenPublication) {
〜
}
}
}
signing {
required { gradle.taskGraph.hasTask("publishMavenJavaPublicationToMavenRepository") }
sign publishing.publications.mavenJava
}
requiredで署名を実施する(ascファイルを生成する)かどうかを指定できる。[2023-10-01]
requiredが無いとtrue扱いで、常に署名される。
しかし署名の鍵が無い環境でpublishToMavenLocal(Mavenローカルリポジトリーにpublish)してもエラーになるので、必要なときだけ署名したい。
requiredにgradle.taskGraph.hasTask()を指定することで、特定のタスクが実行されるときだけ署名するように出来る。
→Mavenセントラルリポジトリーに公開する為のpublishingの例(旧)