迁移到 Quarkus 3.0 轻而易举

Quarkus 3 现已发布,我们鼓励用户升级他们的应用程序以体验有史以来最好的 Quarkus!团队辛勤工作,带来了许多新功能和性能改进。当然,也存在一些破坏性更改。有关核心扩展中所有重要更改的描述,请参阅 迁移指南

尽管如此,仍然存在一些繁琐的工作需要完成。Quarkus 3 已更新至最新的 Jakarta EE 10 API,其中包括臭名昭著的将 javax.* 包更改为 jakarta.* 包。如果您的应用程序使用了任何 Jakarta API(很有可能,例如 JAX-RS、CDI、JPA 等),您需要修改代码。此外,如果项目中存在明确的 Jakarta API 依赖项,您还需要更新该依赖项。

当然,您可以手动迁移应用程序。但由于 Quarkus 崇尚开发者快乐,Quarkus Update Tool 前来救援!

这篇博文是在 Quarkus 3.0 发布后不久撰写的。从那时起,情况已有所发展。

有关如何更新到最新 Quarkus 的更多信息,请查看 专用指南

您也可以在 我们的 wiki 中找到所有迁移指南。

Quarkus Update Tool - 摘要

  1. 安装 Quarkus CLI 或确保已安装最新版本

  2. 运行 quarkus update

  3. 检查工具所做的更改

  4. 享受成果!

Quarkus Update Tool - 完整介绍

该更新工具旨在帮助开发人员顺利地将应用程序迁移到 Quarkus 3。更新过程可以从 Quarkus CLI 触发,也可以直接通过 Maven 或 Gradle 命令触发。该工具本身基本上是一套 OpenRewrite 转换规则。大多数规则定义在 Quarkus Update Recipes 项目中。

更新工具具体做了什么?

  • 更新 Quarkus 版本

  • 转换源代码以使用 jakarta.*

  • 将 Quarkiverse 扩展升级到与 Quarkus 3.0 兼容的版本

  • 将 Java EE API 依赖项更新为 Jakarta EE API 版本

  • 调整一些常见依赖项(例如 Jackson 和 Hibernate)

  • 转换某些配置属性的配置文件(例如,将 quarkus.kubernetes.host 改为 quarkus.kubernetes.ingress.host

  • 重命名一些常见的服务提供商(例如,将 /META-INF/services/javax.ws.rs.ext.Providers 改为 /META-INF/services/jakarta.ws.rs.ext.Providers

如果父项目导入了 Quarkus Platform BOM,也支持标准的 Maven 多模块项目布局。

让我们开始吧。运行更新

CLI
quarkus update
Maven
./mvnw io.quarkus.platform:quarkus-maven-plugin:3.9.3.Final:update -N
Gradle
./gradlew -PquarkusPluginVersion=3.9.3.Final quarkusUpdate
如果使用 Quarkus CLI,请务必使用最新版本。quarkus version 命令应输出版本 3+。

请注意,没有“试运行”模式。换句话说,一旦触发更新,更改将立即写入文件系统。但是,您可以利用源代码管理工具来查看应用的转换。例如,如果您使用 Git,请运行更新工具,然后执行 git diff 命令来查看更改。如果出了问题,只需使用 git checkout . 来撤销更改。

如果您的应用程序依赖于 Hibernate ORM,那么专门的 Hibernate ORM 5 到 6 迁移指南将会很有帮助。

就是这样。您的应用程序现在应该准备就绪了。如果遇到任何问题,请在 Zulip 上联系我们或提交一个 新问题

总结

在本文中,我们讨论了 Quarkus Update Tool 的功能,它可以让您轻松迁移到 Quarkus 3.0。请毫不犹豫地开始吧!

Quarkus Update Tool 不是一次性的工具。计划在未来版本中继续使用此工具来提供简单的更新。