关于 quarkus-update
quarkus-update 是用于检查 Quarkus 项目构建文件并评估升级的技能。它将 Maven 或 Gradle 配置与生成的参考项目比较,再结合迁移试运行和生成器差异梳理更新事项。
主要功能
- 01识别 Maven 和 Gradle 构建文件
- 02与指定版本的参考文件比较
- 03检查可用的 Quarkus 版本
- 04以试运行方式执行更新迁移
- 05区分自动处理与手动变更
适用场景
- 01检查 Quarkus 项目的构建配置
- 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
将用户的构建文件与参考文件进行比较,重点关注:
- 插件版本和配置(compiler 插件、surefire、failsafe、quarkus-maven-plugin)
- BOM 设置(依赖管理结构)
- 构建属性(Java 版本、编码、surefire-plugin.version)
- Wrapper 脚本(是否存在
.mvnw/gradlew、Wrapper 版本)
忽略用户特定内容(不要将以下内容标记为差异):
- 参考文件中不存在的自定义依赖
- groupId、artifactId、项目名称、版本
- 自定义 profile、模块或构建自定义项
- 应用专属配置
报告每项有意义的差异,并说明参考项目中的内容及其重要性。
如果仓库中不存在参考标签(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 步:升级分析(如果版本过旧)
如果有更新的版本,请结合以下两种信息来源:
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 版本升级
- Wrapper 脚本更新
- 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}
- 使用可用工具应用自动迁移: