quarkus-update について
quarkus-updateは、Quarkusプロジェクトのビルドファイルを確認し、アップグレードを評価するスキルです。MavenまたはGradleの設定を生成済みの参照と比較し、更新のドライランと生成物の差分から作業項目を整理します。
主な機能
- 01MavenとGradleのビルドファイルを検出
- 02バージョン別の参照ファイルと比較
- 03利用可能なQuarkusバージョンを確認
- 04更新マイグレーションをドライラン
- 05自動変更と手動変更を区別
活用シーン
- 01Quarkusプロジェクトのビルド設定確認
- 02生成された参照との差分の特定
- 03新しいQuarkusバージョンへの更新評価
- 04自動移行後に必要な手作業の計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ quarkusio/ skills --skill quarkus-updateインストール後、Claude Code で/quarkus-updateを入力して読み込まれたか確認します。
詳細
Quarkus プロジェクトのチェック
code-with-quarkus-compare の参照用生成プロジェクトと比較して、Quarkus プロジェクトのビルドファイルが最新かどうかを確認します。
ステップ 1:ビルドツールとバージョンを検出する
プロジェクトのルートにあるビルドファイルを特定します。
| ファイル | ビルドツール | タグのプレフィックス |
|---|---|---|
pom.xml | Maven | maven- |
build.gradle | Gradle | gradle- |
build.gradle.kts | Gradle Kotlin DSL | gradle-kotlin-dsl- |
Quarkus のバージョンを取得します。
- Maven(
pom.xml):<quarkus.platform.version>プロパティ、または<dependencyManagement>内のquarkus-bomのバージョンを確認します。 - Gradle(
build.gradle):extブロックまたはgradle.properties内のquarkusPlatformVersionを確認します。 - Gradle KTS(
build.gradle.kts):val quarkusPlatformVersionまたは BOM の宣言を確認します。
参照用タグを組み立てます:{tag_prefix}{version}(例:maven-3.15.7)。
ステップ 2:ビルドファイルを参照用ファイルと比較する
参照用のビルドファイルを取得します。
https://raw.githubusercontent.com/quarkusio/code-with-quarkus-compare/{tag}/{build_file}
例:https://raw.githubusercontent.com/quarkusio/code-with-quarkus-compare/maven-3.32.4/pom.xml
ユーザーのビルドファイルを参照用ファイルと比較し、次の点に注目します。
- プラグインのバージョンと設定(コンパイラープラグイン、surefire、failsafe、quarkus-maven-plugin)
- BOM の設定(依存関係管理の構成)
- ビルドプロパティ(Java のバージョン、エンコーディング、surefire-plugin.version)
- ラッパースクリプト(
.mvnw/gradlewの有無、ラッパーのバージョン)
ユーザー固有の内容は無視します(差分として指摘しないでください)。
- 参照用ファイルにないカスタム依存関係
- groupId、artifactId、プロジェクト名、バージョン
- カスタムプロファイル、モジュール、ビルドのカスタマイズ
- アプリケーション固有の設定
意味のある差分をそれぞれ報告し、参照用プロジェクトの内容と、それが重要な理由を説明します。
参照用タグがリポジトリに存在しない場合(404)、そのバージョン用の参照データがないことをユーザーに伝え、利用可能なタグを確認するよう提案します。
ステップ 3:より新しい Quarkus バージョンを確認する
ユーザーのビルドツールのタグ一覧を取得して、利用可能な最新バージョンを確認します。
https://github.com/quarkusio/code-with-quarkus-compare/tags
または git を使用します:git ls-remote --tags https://github.com/quarkusio/code-with-quarkus-compare.git '{tag_prefix}*'
ユーザーのバージョンを最新のタグと比較します。すでに最新バージョンを使用している場合は、その旨を報告してここで終了します。
ステップ 4:アップグレード分析(古いバージョンの場合)
より新しいバージョンが利用可能な場合は、次の 2 つの情報源を組み合わせます。
4a:更新のドライランを実行する
利用可能なツールを使ってドライランを実行します。
| ツール | コマンド |
|---|---|
| Quarkus CLI | quarkus update --dry-run |
| Maven wrapper | ./mvnw quarkus:update -DrewriteDryRun |
| Maven | mvn quarkus:update -DrewriteDryRun |
| Gradle wrapper | ./gradlew quarkusUpdate --rewriteDryRun |
| Gradle | gradle quarkusUpdate --rewriteDryRun |
これにより、ファイルを変更せずに次の内容が生成されます。
- コンソール出力: BOM の更新提案、エクステンションの同期状況、一致した移行レシピ
target/rewrite/rewrite.patch— 更新で適用される実際の差分target/rewrite/rewrite.yaml— OpenRewrite のレシピ全体(バージョンの更新+移行ルール)target/rewrite/rewrite.log— 詳細な実行ログ
target/rewrite/rewrite.patch を読み、更新でどのようなコードレベルの変更が適用されるかを確認します。
4b: ジェネレーターの差分を取得する
GitHub の比較ビューを使って、ユーザーの現在のバージョンと最新バージョンの構造上の差分を取得します。
https://github.com/quarkusio/code-with-quarkus-compare/compare/{current_tag}...{latest_tag}
例:https://github.com/quarkusio/code-with-quarkus-compare/compare/maven-3.15.7...maven-3.32.4
これにより、quarkus update では対応できない可能性のある構造上の変更がわかります。たとえば、次のような変更です。
- 新しいプラグイン設定(例:
<argLine>の追加) - Surefire/failsafe のバージョン更新
- ラッパースクリプトの更新
- Dockerfile の変更
- 定型ファイルの追加または削除
4c: 統合レポート
以下をまとめたレポートを提示します。
- 現在の状態: ビルドツール、現在の Quarkus バージョン、利用可能な最新バージョン
quarkus updateで対応できること: パッチの内容を要約します(バージョン更新、依存関係の名称変更、設定キーの移行)quarkus updateでは対応できないこと: ジェネレーターの差分に含まれるうち、パッチには含まれない構造上の変更です。これらには手動での対応が必要です- 推奨される対応:
- 利用可能なツールを使って、自動移行を適用します:
quarkus update --yes、./mvnw quarkus:update -Drewrite、または./gradlew quarkusUpdate --rewrite - ジェネレーターの差分から特定した、残りの構造上の変更を手動で適用します
- 完全な比較へのリンク:
https://github.com/quarkusio/code-with-quarkus-compare/compare/{current_tag}...{latest_tag}
- 利用可能なツールを使って、自動移行を適用します: