Quarkus Visual Studio Code 工具 - 1.10.0 版本发布

Quarkus Visual Studio Code 工具 1.10.0 已在 VS Code MarketplaceOpen VSX 上发布。所有更改的列表,请参考 更新日志

距离我们上一次发布 Quarkus VS Code 工具已经过去了大约 8 个月。8 个月!!这可真够长的。我们在 1.10.0 版本中加入了一些令人兴奋的新功能,希望大家的等待是值得的。

我们花了大量时间来稳定本次发布,主要是因为加入了对 Qute 模板引擎的支持。我们为它编写了一个容错性强的解析器,提供了各种诊断、代码操作、自动补全,并尽力使 Java 源文件和 Qute 模板文件之间的集成非常顺畅。事实上,其中新增的功能非常多,我们计划单独发一篇帖子来详细介绍 Quarkus 扩展中的 Qute 支持。当然,Quarkus 工具以及底层 MicroProfile 工具也有很多改进。

以下是 Quarkus 部分在 1.10.0 版本中的内容。

配置无处不在

虽然我们之前已经支持通过属性前缀(例如 %dev.name)进行配置,但现在我们也支持感知配置文件的文件。我们已经加入了对这些以及 MicroProfile 2.0 版本中其他许多功能的支持。

Support for configuration profiles

告别 JRE

简而言之:在 Windows、Linux 或 MacOS 上(x86_64 或 ARM64 架构),您将不再需要提供 JRE 来在 VS Code 中运行 Quarkus 工具。

Quarkus 工具及其依赖项过去需要 JRE(Java 运行时环境版本 11 或更高版本)才能运行。这是因为语言服务是基于 Java 的。然而,随着最近的更新,我们底层的 Java 工具支持在其 win32-x64linux-x64linux-arm64darwin-x64darwin-arm64 上提供了自己的 Java 运行时。这意味着,如果您在使用这些系统,确保扩展至少能找到某个版本的 Java 11 将不再是必需的。

支持所有注解

好吧,可能有点夸张,但我们在新版本中引入的一个小框架使得为各种注解快速编写良好的诊断信息更加容易。举个非常简单的例子,这是支持 @Scheduled 注解的 delay 成员值验证所需的代码。

<extension point="org.eclipse.lsp4mp.jdt.core.javaASTValidators">
      <!-- Java validation for the Quarkus @Scheduled annotation delay member-->
      <annotationValidator annotation="io.quarkus.scheduler.Scheduled" source="quarkus">
         <attribute name="delay" range="0" /> <!-- x >=0 -->
      </annotationValidator>
   </extension>

这处理了很多非常简单的验证,使我们能够花更多时间来正确处理复杂的事情。

除了让我们生活更轻松,它还为更多贡献者开放了扩展。

我们为 @Bulkhead@Timeout@Asynchronous@Scheduled 注解增加了基本的验证支持。

Asynchronous annotation validation support

对于 @Scheduled,我们将 cron 表达式链接回应用程序属性定义,就像我们为 @ConfigPropertyname 成员所做的那样。这些情况使我们能够轻松地将 Java 源文件与 Quarkus 配置文件关联起来。

细节之处

对于我们现有的功能,我们希望涵盖更多现有的用例,以及那些可以轻松标记问题并建议解决方案的情况。

例如,在启动 Quarkus 应用程序时,代码提示 URL 端点(通过 microprofile.tools.codeLens.urlCodeLensEnabled 设置启用)现在支持 @ApplicationPath 并会考虑其值。

ApplicationPath annotation on a type declaration

在此示例中,@ApplicationPath 设置为 /api,并且下面的方法声明中的代码在生成 URL 时会考虑到这一点。

Code lens on method declaration respects the value of ApplicationPath

在其他注解中,例如 @Retry,我们花时间提醒用户关于一些虽然技术上允许但可能不希望的使用情况。

Retry annotation validation support

在此示例中,重试方法的延迟和尝试重试的最大持续时间相同。这意味着这些设置可能没有按预期使用。当 jitterjitterDelayUnit 等成员值用于增加复杂性时,这些警告可以很好地指示配置不当的值。

对于 @ConfigProperty 注解,我们现在会验证 defaultValue 成员是否与字段声明匹配,以增加安全性。

Validation for ConfigProperty defaultValue

如果您不使用 defaultValue,并且您的属性未在应用程序属性中定义,我们还有一个代码操作可以自动生成它。

Code action defaultValue

自动补全也是!

归根结底,每个人都希望花更少的时间去寻找一些晦涩的设置,而将更多时间用于开发逻辑。

如果您在 Java 源文件的方法上使用了 @CacheResult 注解,我们将自动建议可在配置文件中配置它的设置。它对更改也相当敏感,因此您将始终知道是否有任何问题。

Completion support for CacheResult

@ConfigMapping 现在也支持一些基本验证以及应用程序属性的自动补全。

Completion support for ConfigMapping

我们希望您能尝试我们的 VS Code 扩展,并期待收到您的反馈。非常感谢 redhat-developer/vscode-quarkusredhat-developer/vscode-microprofileredhat-developer/quarkus-lseclipse/lsp4mpredhat-developer/vscode-javaeclipse/eclipse.jdt.ls 的众多贡献者,他们帮助项目取得了今天的成就。敬请关注我们关于新增 Qute 功能的帖子。