在 JDK 23 中使用 Lombok 库

为了能够在新的 Java 23 中使用 Lombok,我们需要启用完整的编译处理。可以在 Maven 中按如下方式完成:
list=1
*获取最新版本maven-compiler-version(撰写本文时为版本 3.13.0)
*设置maven.compiler.proc具有值的属性full。
/list

b否则:/b
来自 Lombok 和 Java 23 的Maven编译错误如下所示:

codeINFO --- compiler:3.13.0:compile (default-compile) @ sat-core ---
WARNING  Parameter 'forceJavacCompilerUse' (user property 'maven.compiler.forceJavacCompilerUse') is deprecated: Use forceLegacyJavacApi instead
INFO Recompiling the module because of changed source code
INFO Compiling 50 source files with javac debug parameters release 23 to target\classes
INFO -------------------------------------------------------------
ERROR COMPILATION ERROR : 
INFO -------------------------------------------------------------
ERROR spring-advanced-training\sat-core\src\main\java\com\github\aha\sat\core\aop\BeverageLogger.java:21,2 error: cannot find symbol
  symbol:   variable log
  location: class BeverageLogger
...
INFO 16 errors 
INFO -------------------------------------------------------------
INFO ------------------------------------------------------------------------
INFO BUILD FAILURE
INFO ------------------------------------------------------------------------
INFO Total time:  3.090 s
INFO Finished at: 2024-09-26T08:45:59+02:00
INFO ------------------------------------------------------------------------
ERROR Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project sat-core: Compilation failure: Compilation failure: 
ERROR spring-advanced-training\sat-core\src\main\java\com\github\aha\sat\core\aop\BeverageLogger.java:21,2 error: cannot find symbol
ERROR   symbol:   variable log
ERROR   location: class BeverageLogger/code

编译错误是由 Java 23 中注解处理行为的变化引起的。
请参阅 JDK 23 发行说明和以下声明:
从 JDK 23 开始,只有在对注释处理进行了某些显式配置或在 javac 命令行上提出了运行注释处理的显式请求后,才会运行注释处理。 这改变了现有的默认行为,即通过搜索类路径来运行注释处理,而不需要任何与注释处理相关的显式选项。

更多url=https://github.com/projectlombok/lombok/issues/3752here/url.

解决办法:
code
    ...
    23
    3.13.0
    full


    
        ...
        
            org.apache.maven.plugins
            maven-compiler-plugin
            ${maven-compiler-plugin.version}
            
                ${java.version}
                ${java.version}
            

        

    

/code

关键配置:
list
b3.13.0/b
*bfull/b
/list

本文介绍了使用 Lombok 库和升级到 JDK 23 相关的问题。完整的更改(但还有更多更改)可在此url=https://github.com/arnosthavelka/spring-advanced-training/commit/29e47231f94556ff08173d992da9a4384c855816?diff=split&w=0#diff-49d7e9283623afcbf89d5cc8019b80174f5dd3379d51f01764713f5f5e69a992R21GitHub /url提交中查看。