如何访问依赖项目中Lombok注解生成的Getter与Setter方法?
跨项目访问Lombok生成的Getter/Setter方法解决方案
核心问题本质
Lombok注解的Retention是SOURCE,编译后注解会被丢弃,但关键是EntityModel项目是否在编译阶段正确把getter/setter等方法生成到.class文件中。你遇到的编译报错和无代码提示,本质是Onboarding项目依赖的EntityModel产物里没有这些生成的方法。
具体解决步骤
1. 确保EntityModel编译时生成Lombok代码
Lombok是编译时注解处理器,必须让项目构建工具(Maven/Gradle)正确配置,保证编译阶段自动生成方法:
Maven配置示例:
在pom.xml中添加Lombok依赖,并配置编译器启用注解处理:<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <!-- 使用最新稳定版 --> <scope>provided</scope> </dependency> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>17</source> <!-- 替换为你的JDK版本 --> <target>17</target> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>Gradle配置示例:
在build.gradle中配置:dependencies { compileOnly 'org.projectlombok:lombok:1.18.30' annotationProcessor 'org.projectlombok:lombok:1.18.30' } compileJava { options.annotationProcessorPath = configurations.annotationProcessor }
配置完成后重新编译EntityModel,检查编译输出的.class文件,确认getId()、setId()等方法已存在(注解不存在是正常的,因为Retention为SOURCE)。
2. 正确配置Onboarding项目的依赖
- 如果是本地多模块项目(如Maven/Gradle多模块),直接依赖EntityModel模块即可,构建工具会自动保证先编译EntityModel,再编译Onboarding。
- 如果是远程仓库依赖,确保上传到仓库的EntityModel jar包是已编译完成、包含Lombok生成方法的版本,不要上传未编译的源码或未处理的jar。
3. 解决IDE无代码提示问题
- 确保Onboarding项目的IDE安装并启用了Lombok插件:
- IntelliJ IDEA:打开
File > Settings > Plugins,搜索Lombok并启用;再进入File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors,勾选Enable annotation processing。 - Eclipse:安装Lombok插件后,进入项目属性
Java Compiler > Annotation Processing,勾选Enable annotation processing。
- IntelliJ IDEA:打开
4. 常见排查点
- 不要将Lombok的依赖scope设为
compile,provided足够,避免冗余依赖。 - 检查EntityModel的编译日志,确认Lombok注解处理器是否被调用,如果没有,可能是构建工具配置有误。
- 避免在EntityModel中同时使用Lombok注解和手写getter/setter,防止方法冲突。
内容的提问来源于stack exchange,提问作者edpavanelli
相关产品推荐
相关产品推荐

