配置系统
Lombok,按需定制:在一个地方为您整个项目甚至您的工作区配置 lombok 功能。
import
指令在 lombok 1.18.12 中添加。lombok.addNullAnnotations
配置键在 lombok 1.18.12 中添加。概述
您可以在任何目录中创建 lombok.config
文件并在其中放置配置指令。 这些应用于此目录和所有子目录中的所有源文件。
对于 lombok 可配置的方面,配置系统尤其有用,这些方面在整个项目中往往是相同的,例如您的日志变量的名称。 配置系统还可以用于告诉 lombok 标记您不喜欢的 lombok 功能的任何用法,作为警告甚至错误。
通常,lombok 用户将包含其首选项的 lombok.config
文件放在工作区或项目根目录中,并使用特殊的 config.stopBubbling = true
键来告诉 lombok 这是您的根目录。 然后,您可以在任何子目录(通常代表项目或源包)中创建具有不同设置的 lombok.config
文件。
可以通过运行以下命令生成 Lombok 版本支持的所有配置键的最新列表
java -jar lombok.jar config -g --verbose
lombok.config
文件。config 工具还可以用于显示任何给定目录或源文件的完整 lombok 配置,只需将它们作为参数提供即可。
可用配置选项的示例(有关其相关配置键,请参阅 lombok 功能的功能页面,以及 java -jar lombok.jar config -g
以获取完整列表)
-
lombok.accessors.chain
- 如果设置为
true
,则默认情况下生成的 setter 将“链式调用”(它们将返回this
而不是具有void
返回类型)。 -
lombok.accessors.fluent
- 如果设置为
true
,则生成的 setter 和 getter 将简单地命名为与字段名称相同,而没有get
或set
前缀。 -
lombok.anyConstructor.addConstructorProperties
- 如果为
true
,则在生成构造函数时,lombok 将生成@java.beans.ConstructorProperties
注解。 请注意,如果您正在使用 jigsaw,则需要依赖模块 'java.desktop'。 -
lombok.log.fieldName
- 生成的日志字段的名称(默认值:
log
)。 -
lombok.(featureName).flagUsage
- 允许您强制停止或阻止使用 lombok 功能。 此键的合法值为
warning
或error
。 (featureName) 的一些示例值是:“experimental
”(标记使用任何 实验性 功能),“builder
”,“sneakyThrows
”或“extensionMethod
”。
配置文件是分层的:任何配置设置都适用于该目录中的所有源文件以及子目录中的所有源文件,但更接近源文件的配置设置优先。 例如,如果您在 /Users/me/projects/lombok.config
中有以下内容
lombok.log.fieldName = foobar
/Users/me/projects/MyProject/lombok.config
中,您有lombok.log.fieldName = xyzzy
@Log
注解将在您的所有项目中使用 foobar
而不是默认的 log
作为要生成的字段名称,除了您在 /Users/me/projects/MyProject
中的项目,其中使用 xyzzy
代替。要将父配置文件设置的配置键恢复为默认值,可以使用 clear
选项。 例如,如果父配置文件已将 val
的所有使用配置为发出警告,则可以通过在子目录中包含一个包含以下内容的 lombok.config
文件来关闭子目录的警告
clear lombok.val.flagUsage
某些配置键采用列表。 对于列表,请使用 +=
添加条目。 您可以使用 -=
从列表中删除单个项目(对于撤消父配置文件的设置很有用)。 例如
lombok.accessors.prefix += m_
注释可以包含在 lombok.config
文件中; 以 #
开头的任何行都被视为注释。
全局配置键
这些配置键对许多或所有 lombok 功能或配置系统本身都有影响。
要阻止 lombok 从父目录查找更多配置文件,可以包含特殊键
config.stopBubbling = true
当 lombok 认为有意义时,它可以添加空值注释(通常称为 @NonNull
和 @Nullable
); 考虑生成的 toString
和 withX
方法(这些方法永远不会返回 null),或者生成的 equals
方法的参数,该参数可以为 null,如果您已为严格的 null 检查以及“参数默认是非 null”设置了 IDE,则需要这样的注释。 有许多这样的库; 您必须告诉 lombok 使用哪一个。 默认情况下,不添加此类注释。 使用以下方式启用此功能
lombok.addNullAnnotations = <flavor>
javax
(=JSR305;不推荐),jakarta
,eclipse
,jetbrains
,netbeans
,androidx
,android.support
(在 android 中已弃用),checkerframework
(推荐),findbugs
,spring
,jml
,或通过 CUSTOM:fully.qualified.NonNullAnnotation:fully.qualified.NullableAnnotation
定义您自己的; 如果您的空值注释仅属于类型使用样式(它注释类型,例如 eclipse 和 checkerframework 的产品,而不是注释方法和参数),则格式为 CUSTOM:TYPE_USE:nonnullanno:nullableanno
。此功能在 lombok v1.18.12 中添加.
可以将 Lombok 配置为在所有可能的生成节点中添加 @lombok.Generated
注解; 对于 JaCoCo(具有内置支持)或其他样式检查器和代码覆盖率工具很有用
lombok.addLombokGeneratedAnnotation = true
如果您想在类文件上运行 FindBugs,Lombok 会添加 @SuppressFBWarnings
注解,这很有用。 要启用此功能,请确保 findbugs 在编译时位于类路径中,并添加以下配置键
lombok.extern.findbugs.addSuppressFBWarnings = true
默认情况下,Lombok 会将 @SuppressWarnings("all")
注解添加到所有生成的节点。 如果您想使用像 Checker Framework 这样的静态代码分析器,则可以关闭此功能。
lombok.addSuppressWarnings = false
可以影响任何源文件的配置键
即使这些源文件中没有 0 个 lombok 注解,这些配置键也可以使 lombok 影响源文件。
lombok.fieldDefaults.defaultPrivate = true
lombok.fieldDefaults.defaultFinal = true
@FieldDefaults
文档。
从其他文件导入配置
在配置文件的顶部,可以导入其他配置文件。 导入的文件不必称为 lombok.config
,并且可以具有任何文件扩展名(甚至没有)。
import ../configuration/model.config
对于共享项目,始终使用相对路径是有意义的。 对于个人,也可以使用绝对路径。
# Linux
import /etc/lombok/model.config
# Windows
import d:/lombok/model.config
配置文件可以导入多个配置文件,只要它们在任何配置键之前指定。 系统表现得好像导入文件的内容位于 import
声明的位置。
配置系统的工作方式是重复的条目实际上被忽略。 它是后来的优先。 Lombok 在解析特定值时只会处理一次配置文件。 这允许您从不同的配置文件导入相同的文件,甚至创建循环而不会出现任何问题。
也可以从 .jar
和 .zip
文件中导入文件。
# 使用存档根目录中的“lombok.config”。
import ../deps/lombok-config.jar
# 使用存档中的给定文件。
import ../deps/lombok-config.zip!base/model.config
导入文件时,可以使用环境变量。
# 环境变量是以尖括号(<,>)包围的名称。
# 如果存在,它们将被 System.getenv(name) 替换。
import <JAVA_PROJECTS>/shared.config
# 开头的波浪号 (~) 将被 System.getProperty("user.home", "~") 替换。
import ~/my.config
此功能在 lombok v1.18.12 中添加。