Lombok 的配置 lombok.config

在 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 中添加的。

转载请注明出处:码谱记录 » Lombok 的配置 lombok.config