Java 21环境下Maven集成Lombok编译失败问题求助
问题:Maven编译Lombok项目失败,Eclipse运行正常
当前环境与依赖配置
使用Lombok 1.18.34,pom.xml中的Lombok依赖配置如下:
<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> ... </dependencies>
问题现象
项目在Eclipse中可正常运行,但执行Maven编译时,所有使用Lombok的类均出现构建错误,示例错误如下:
[ERROR] /..../ExtractResult.java:[73,47] type lombok.Builder does not take parameters [ERROR] /..../Selector.java:[29,56] cannot find symbol symbol: class Builder location: class ....TaggedGroupingTransformer
从报错来看,Maven构建过程未识别到Lombok。
已尝试的解决方案
- 配置maven-compiler-plugin的
annotationProcessorPaths,引入Lombok作为注解处理器:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>21</source> <target>21</target> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>
- 尝试使用lombok-maven-plugin的delombok功能(非预期方案,仅用于排查):
<build> <plugins> <plugin> <groupId>org.projectlombok</groupId> <artifactId>lombok-maven-plugin</artifactId> <version>1.18.20.0</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>delombok</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> </dependencies> </plugin> </plugins> </build>
以上两种方案均未解决问题,且delombok未在target/generated-sources/annotations目录生成任何文件。
补充信息
- 另有一个Java 11环境的同类项目可正常构建,但将当前项目切换为Java 11后仍报错;
- 当前项目部分类在
@Builder中使用泛型,示例代码如下:
@Builder(toBuilder = true, builderClassName = "Builder") @ToString(exclude = {"source", "intermediateTexts"}) @EqualsAndHashCode public class ExtractResult<T extends ExtractText> { }
但在正常项目中添加相同泛型配置后仍可编译,因此排除泛型导致问题的可能。
请问还有哪些排查方向?
内容的提问来源于stack exchange,提问作者Kevin Day
相关产品推荐
相关产品推荐

