From bce45952422f6cb4756e55783f0a4e2d4c75b5ab Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 8 Aug 2026 15:52:41 +0900 Subject: [PATCH 1/2] =?UTF-8?q?build:=20=E7=BD=B2=E5=90=8D=E3=82=92?= =?UTF-8?q?=E5=BF=85=E9=A0=88=E3=81=A8=E3=81=99=E3=82=8B=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E3=82=92=E3=83=AA=E3=83=A2=E3=83=BC=E3=83=88=E5=85=AC=E9=96=8B?= =?UTF-8?q?=E3=81=AB=E9=99=90=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 公開プラグインの既定は「リリース版なら署名必須」で、その判定はローカル公開にも及ぶ。 integration-test のフィクスチャは鍵の無い環境で publishToMavenLocal を使うため、そのままでは リリース版を宣言した時点でローカル公開が成立しなくなる(署名対象が無いとして失敗する)。 ローカル公開のタスクはリモートとは別型であり、必須とする範囲をリモートへ publish する場合に絞れる。 未署名のまま公開へ進むことは、公開先の検証が受け付けないことで防がれる。 Co-Authored-By: Claude Opus 5 --- build.gradle.kts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index 6bdab34..7f6c228 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,6 @@ import com.ncorti.ktfmt.gradle.KtfmtPlugin +import org.gradle.api.publish.maven.tasks.PublishToMavenRepository +import org.gradle.plugins.signing.SigningExtension // ルートプロジェクトは集約のみを担う。各モジュールの構成は各自の build.gradle.kts が持つ。 // integration-test は独立した composite build であり、ここには含めない(docs/test/テスト戦略.md)。 @@ -32,6 +34,25 @@ allprojects { version = enumizerFullVersion } +// 署名を必須とする条件を、リモートリポジトリへ publish する場合に限る。 +// 公開プラグインの既定はリリース版であれば必須で、その判定はローカル公開にも及ぶ。 +// integration-test のフィクスチャは鍵の無い環境で publishToMavenLocal を使うため、そのままでは +// リリース版を宣言した時点でローカル公開が成立しなくなる(ローカル公開のタスクはリモートとは別型)。 +// 未署名のまま公開へ進むことは、公開先の検証が受け付けないことで防がれる。 +// 設定は各モジュールのスクリプト評価中に書かれるため、上書きは評価後に行う +allprojects { + plugins.withId("signing") { + afterEvaluate { + extensions.configure { + setRequired { + !version.toString().endsWith("-SNAPSHOT") && + gradle.taskGraph.allTasks.any { it is PublishToMavenRepository } + } + } + } + } +} + // 版は次の 2 段で単一情報源から導出する。上流ほど源に近く、下流は上流の値を写した生成物として扱う。 // 1. kotlin-maven-plugin の親 POM の → version catalog の maven 版(syncMavenVersion) // 2. version catalog / enumizerVersion / wrapper properties → README / docs / .idea 中の現行版表記 From cd5488750011d8d6f82c423fcee7428f9e474a3a Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 8 Aug 2026 15:52:41 +0900 Subject: [PATCH 2/2] =?UTF-8?q?build:=20=E3=83=AA=E3=83=AA=E3=83=BC?= =?UTF-8?q?=E3=82=B9=E7=89=88=202.4.10-0.1.0=20=E3=82=92=E5=AE=A3=E8=A8=80?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 自版から -SNAPSHOT を外す。版表記の同期はこの宣言で対象が切り替わるが、リリース版の値自体は 変わらないため、README と概要の表記に差分は生じない。 Co-Authored-By: Claude Opus 5 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2dd34fb..c435046 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ kotlin.code.style=official # 配布版の自版。フル版は -<自版> 形式で、前半の Kotlin 版は gradle/libs.versions.toml が正 # (ルートの build.gradle.kts が結合して全モジュールへ配る) -enumizerVersion=0.1.0-SNAPSHOT +enumizerVersion=0.1.0 # コンパイラプラグイン ID の単一情報源。compiler-plugin の EnumizeCommandLineProcessor.PLUGIN_ID と # 一致していなければならない。gradle-plugin / maven-plugin はビルド時生成の Coordinates 経由で参照し、