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 sonatypeUsername=アクセストークンのID sonatypePassword=アクセストークンのトークン
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の例