不保留多模块项目中的 Lombok @RequiredArgsConstructor

Lombok @RequiredArgsConstructor in multi-module project is not preserved

@RequiredArgsConstructor 是否跨模块保留?

我有一个非常简单的项目结构(2 个 maven 模块):

dependency-A 我声明如下 class:

@RequiredArgsConstructor
@RestController
@Validated
@Slf4j
public abstract class ControllerBase {}

现在 spring-boot-app:

@RequestMapping("/api/v1")
public class ConcreteController extends ControllerBase {

    private final SomeDependency dependency

在此之后 IntelliJ 说

Variable dependency might not been initialized

如果我从 sprint-boot-app 模块检查 ControllerBase 的反编译版本:

@RestController
@Validated
public class ControllerBase {
    private static final Logger log = LoggerFactory.getLogger(MyController.class);

    public ControllerBase () {
    }
}

是Lombok的限制还是我应该以某种方式配置maven-compiler插件,所以@RequiredArgsConstructor会被保留?请指教

Lombok

复制过去

@RequiredArgsConstructor 为每个需要特殊处理的字段生成一个带有一个参数的构造函数。所有 non-initialized final 字段以及标记为 @NonNull 且未在声明位置初始化的任何字段都获得一个参数。对于那些标有 @NonNull 的字段,还会生成显式空检查。如果用于标记为 @NonNull 的字段的任何参数包含 null,则构造函数将抛出 NullPointerException。参数的顺序与字段在 class.

中出现的顺序相匹配

Lombok 注解不能被继承。
它们是编译时指令,将代码添加到带注释的 class 并且仅添加到带注释的 class.
即使您在同一模块中创建子 class,它也不会传播。

您必须用 @RequiredArgsConstructor 注释每个 class。