JDK 23:更改默认注释处理策略

0.前言

注释处理是一项编译时功能,其中 javac 扫描要编译的源文件中的注释,然后扫描类路径以查找匹配的注释处理器,以便它们可以生成源代码。在 JDK 22 之前,此功能默认启用,当它在 2006 年左右的 JDK 6 中引入时,这可能是合理的,但从当前的角度来看,为了使构建输出更可靠,以防止注释处理器被无意中放置在类路径上,这不太合理。因此,从 JDK 23 开始,javac 需要一个额外的命令行选项来启用注释处理。

1.新-proc参数值

-proc:{policy}扩展了预先存在的选项,{policy}现在可以具有以下值:

  • none:编译时不进行注释处理 - 此策略自 JDK 6 开始存在
  • only:无需编译即可处理注释 - 此策略自 JDK 6 开始存在
  • full:注释处理后再进行编译 - 此策略是 JDK ≤22 中的默认策略,但该值本身是新的(请参阅下一部分了解支持它的版本)

直到 JDK 22 为止,需要在编译之前进行注释处理的代码库可以依赖 javac 的默认行为来处理注释,但现在情况已不再如此。从 JDK 23 开始,至少需要有一个注释处理命令行选项。如果没有使用-processor,–processor-path,–processor-module-path 或proc:only,–proc:full或-proc:none必须提供。换句话说,如果没有其他命令行选项,则在 JDK 23 上是默认的。

2.迁移至-proc:full

采取了多项措施帮助项目做好以下转换-proc:full的准备:

  • 自 2024 年 4 月 JDK 安全更新以来,对-proc:full的支持已反向移植到 Oracle JDK 和 OpenJDK 发行版的 17u (17.0.11) 和 11u (11.0.23)。此外,Oracle 的 8u 版本 (8u411) 也支持-proc:full。
  • 从 JDK 21 开始,如果检测到默认策略下注释处理的隐式使用,javac 会打印一条信息消息。

通过-proc:full反向移植,可以配置一个在 javac 的默认策略更改之前和之后能够以相同方式运行的构建。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值