mcpField
Q
quarkus-update

quarkus-update

github.com/quarkusio开发37211 次安装2 天前更新
代码仓库

关于 quarkus-update

quarkus-update 是用于检查 Quarkus 项目构建文件并评估升级的技能。它将 Maven 或 Gradle 配置与生成的参考项目比较,再结合迁移试运行和生成器差异梳理更新事项。

主要功能

  1. 01识别 Maven 和 Gradle 构建文件
  2. 02与指定版本的参考文件比较
  3. 03检查可用的 Quarkus 版本
  4. 04以试运行方式执行更新迁移
  5. 05区分自动处理与手动变更

适用场景

  1. 01检查 Quarkus 项目的构建配置
  2. 02查找与生成参考项目的差异
  3. 03评估升级到较新 Quarkus 版本
  4. 04规划自动迁移之外的手动工作

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/quarkusio/skills --skill quarkus-update

安装后在 Claude Code 中输入/quarkus-update确认已加载。

详细介绍

Quarkus 项目检查

通过与 code-with-quarkus-compare 生成的参考项目进行比较,检查 Quarkus 项目的构建文件是否为最新版本。

第 1 步:检测构建工具和版本

识别项目根目录中存在的构建文件:

文件构建工具标签前缀
pom.xmlMavenmaven-
build.gradleGradlegradle-
build.gradle.ktsGradle Kotlin DSLgradle-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 CLIquarkus update --dry-run
Maven Wrapper./mvnw quarkus:update -DrewriteDryRun
Mavenmvn quarkus:update -DrewriteDryRun
Gradle Wrapper./gradlew quarkusUpdate --rewriteDryRun
Gradlegradle 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:综合报告

提供一份综合报告:

  1. 当前状态: 构建工具、当前 Quarkus 版本、最新可用版本
  2. quarkus update 会处理的内容: 总结补丁内容(版本升级、依赖项重命名、配置键迁移)
  3. quarkus update 不会处理的内容: 生成器差异中未包含在补丁里的结构性差异——这些需要手动处理
  4. 建议操作:
    • 使用可用工具应用自动迁移:quarkus update --yes、./mvnw quarkus:update -Drewrite 或 ./gradlew quarkusUpdate --rewrite
    • 手动应用生成器差异中发现的其余结构性变更
    • 链接到完整比较结果:https://github.com/quarkusio/code-with-quarkus-compare/compare/{current_tag}...{latest_tag}

评论

支持 Markdown