Skip to content

feat: Maven プラグインを追加する - #16

Merged
k163377 merged 5 commits into
mainfrom
feat/maven-plugin
Aug 1, 2026
Merged

feat: Maven プラグインを追加する#16
k163377 merged 5 commits into
mainfrom
feat/maven-plugin

Conversation

@k163377

@k163377 k163377 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

gradle-plugin と同等の機能を Maven でも提供する。

追加

追加 内容
maven-plugin 公開 artifactId sealed-class-enumizer-maven-plugin。kotlin-maven-plugin の拡張(KotlinMavenPluginExtension)であり Mojo ではない。Plexus の role-hint = 利用者が <compilerPlugins> へ書く sealed-class-enumizer
integration-test/maven-integration 実 Maven ビルドを駆動する 9 番目のモジュール。apache-maven の配布物を依存として取得するため、ホストへの Maven インストールを前提にしない

gradle-plugin との対応

機能 Gradle Maven
全コンパイレーションへの適用 自動 <compilerPlugins> 記載で compile / test-compile 双方
コンパイラプラグイン本体の供給 SubpluginArtifact 本成果物の推移依存(利用側の宣言は 1 つ)
プロジェクト既定の labelCase DSL・常に具体値 プロパティ sealed-class-enumizer.labelCase・常に具体値
対応外 Kotlin の警告 KGP の版で判定 kotlin-maven-plugin の版で判定
runtime-api の自動追加 あり なし(Maven では拡張からプロジェクト依存を追加できないため、利用側が宣言する)

テスト

  • 単体 10 件: オプションの組み立て・実行単位指定による抑止・不正値の拒否文言・適用範囲・Kotlin 版警告の発火/非発火・Plexus 登録と実装の整合・runtime-api の LabelCase 一致
  • 実 Maven 5 件(BLD-49〜53): 適用範囲・プロジェクト既定の伝達・実行単位指定の優先・診断のビルド失敗・設定不正値のビルド失敗

結合テストで 2 件の欠陥を検出して修正済み。

  1. コンパイラの labelCase は複数指定を受け付けないため、<pluginOptions> 併用時にビルドが失敗していた(拡張側が渡さない形にして優先関係を成立させた)
  2. Maven のローカルリポジトリが既定(~/.m2/repository)だと、Gradle module metadata を伴わない成果物が入り、mavenLocal() を宣言する TestKit フィクスチャの variant 解決を壊していた(テスト専用リポジトリへ隔離した)

未対応

docs/チェックリスト.md(未追跡の作業用資料)への 4 成果物化の反映は作業ツリーに残してある。

🤖 Generated with Claude Code

k163377 and others added 5 commits August 1, 2026 23:40
gradle-plugin と maven-plugin が同じ ID を必要とするため、リテラルの二重管理を避けて
ルートの gradle.properties を正とし、生成 Coordinates 経由で参照させる。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
kotlin-maven-plugin の拡張(KotlinMavenPluginExtension)として maven-plugin モジュールを追加し、
compile / test-compile の双方へコンパイラプラグインを適用する。コンパイラプラグイン本体は
本成果物の推移依存として配るため、利用側の宣言は 1 つで足りる。

プロジェクト既定の label ケースはプロパティ sealed-class-enumizer.labelCase から常に具体値で
オプションへ伝達する。実行単位の <pluginOptions> に同じ指定がある場合は何も渡さない
(コンパイラのオプションは複数指定を受け付けないため、抑止によって優先関係を作る)。

runtime-api の自動追加は行わない。Maven では拡張からプロジェクト依存を追加できず、
追加にはビルド拡張の別途宣言を要するため、利用側が依存として宣言する。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
integration-test に maven-integration モジュールを追加し、apache-maven の配布物を依存として
取得して実ビルドを駆動する(ホストへの Maven インストールを前提にしない。起動は zip 展開で
実行権限が落ちる bin スクリプトではなく classworlds の Launcher を直接叩く)。

適用範囲(production / test)・label ケースの決定と優先順位・診断と設定不正のビルド失敗を
実ビルドで固定する。Maven のローカルリポジトリはテスト専用の場所へ隔離し、本プロジェクトの
成果物だけを複製する(既定の ~/.m2/repository を使うと、Gradle module metadata を伴わない
成果物がそこへ入り、mavenLocal() を宣言する TestKit フィクスチャの variant 解決を壊すため)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
integration-modules から重いテストを外し、maven-integration を専用ジョブで実行する。
Maven がテスト専用ローカルリポジトリへ取得する第三者依存をキャッシュする。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
概要へモジュールと配布の記述、テスト戦略へ次元 K17(ビルドツール)と maven-integration、
ケース06 へ Maven ビルドのケース(BLD-49〜53)、フィクスチャ構成へ Maven フィクスチャと運用方針、
保留の V8 環境マトリクスへ Maven の実測済み範囲、README へ Maven の Setup を追加する。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@k163377
k163377 marked this pull request as ready for review August 1, 2026 14:53
@k163377
k163377 merged commit 2eab27f into main Aug 1, 2026
9 checks passed
@k163377
k163377 deleted the feat/maven-plugin branch August 1, 2026 14:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant