在 Lombok 1.14 中,引入了强大的配置能力,开发者可以在统一的地方进行配置管理。
配置概述
Lombok 识别的配置文件名为 lombok.config
,如果在某一包中存在该文件,则配置将适配于该包及其子包中所有文件。
lombok.config
可以用于项目中生成的代码更统一,例如配置统一的日志变量名,或者希望禁用某一功能/注解。
你可以在项目的根目录下放置一个 lombok.config
文件,并在其中添加 config.stopBubbling = true
告诉 Lombok 这是项目根目录。然后,可以在项目的其他目录下创建 lombok.config
文件,添加更为具体的配置项。
可以通过在命令行窗口 CMD 中运行如下命令来显示当前版本的 Lombok 支持的配置项:
java -jar lombok.jar config -g --verbose
命令的输出就是一个有效的 lombok.config
文件。其中包含所有的配置项与其相关说明。
配置项
这里列举几个配置项。
lombok.accessors.chain
如果设置为 true ,则生成的 setter 将默认“链接”(它们将返回 this 而不是 void)。
lombok.accessors.fluent
如果设置为 true ,则生成的 setter 和 getter 的名称将与字段名称相同,不带 get 和 set 前缀。
lombok.log.fieldName
生成的日志字段的名称(默认值: log )。
lombok.(featureName).flagUsage
取值可以是 warning 或 error 。如果你不希望在项目中使用某功能,可以将 (featureName) 替换为该功能,则项目中使用到该特性时会提醒(设置为 warning)或报错(设置为 error)。
配置优先级
当项目中存在多个 lombok.config
文件时,更靠近源文件的配置拥有更高的优先级。
例如,在 /Users/me/projects/lombok.config
文件(父配置文件)中有如下配置:
lombok.log.fieldName = foobar
在 /Users/me/projects/MyProject/lombok.config
文件(子配置文件)中有如下配置:
lombok.log.fieldName = xyz
此时,项目 projects
中被 @Log 注解标记的类,生成的日志变量名称为 foobar ,但是,位于 MyProject
包及其子包被标记的类,生成的日志变量名称为 xyz。
如果在父配置文件中定义的配置,子配置文件中想恢复为默认值,可以使用 clear。例如:父配置文件已配置了所有使用 val
的发出警告,则可以通过在子目录中 lombok.config 文件包含以下配置来关闭子目录的警告。
clear lombok.val.flagUsage
有些配置项的值为 list ,可以通过 +=
来想列表中添加元素,通过 -=
来移除父配置文件中的元素。
lombok.accessors.prefix += m_
如果 lombok.config
文件某一行以 #
开头,则表示该行为注释。
全局配置
如果想阻止 Lombok 查看父配置文件中的配置,可以添加配置:
config.stopBubbling = true
建议将该配置放在项目的跟目录配置文件中。
Lombok 可以在适合的位置添加非空注解,例如 @NonNull 和 @Nullable ,可以通过如下配置启用该功能:
lombok.addNullAnnotations = <flavor>
其中,<flavor>
可以是 javax 、jakarta、eclipse、findbugs、spring、jml 中的注解,也可以是自定义的注解。
此功能是在 lombok v1.18.12 中添加的。
Lombok 可以在生成的类上添加 @lombok.Generated ,用于告诉其他框架特殊处理,如忽略样式检查或者代码覆盖率等。
lombok.addLombokGeneratedAnnotation = true
如果您想在类文件上运行 FindBugs,可以通过如下配置让 Lombok 个生成的类添加 @SuppressFBWarnings 注解。
默认情况下,Lombok 会将注解添加 @SuppressWarnings(“all”) 到所有生成的节点。如果你想使用像 Checker Framework 这样的静态代码分析器,可以通过如下配置关闭此功能。
lombok.addSuppressWarnings = false
全局影响的配置项
如下两个配置会影响项目中所有类文件,即使没有在项目中使用任何 Lombok 注解。
lombok.fieldDefaults.defaultPrivate = true
lombok.fieldDefaults.defaultFinal = true
打开这些选项中的任何一个都意味着 Lombok 将使每个源文件中的每个字段都成为 final/private 字段,除非它具有显式访问修饰符或注释来禁止此字段。
配置导入
在配置文件的顶部,可以导入其他配置文件。导入的文件不必被命名为 lombok.config ,可以具有任何文件扩展名(甚至没有)。
import ../configuration/model.config
在一个 lombok.config
中,可以使用多次导入:
# Linux
import /etc/lombok/model.config
# Windows
import d:/lombok/model.config
此功能是在 lombok v1.18.12 中添加的。