java17 解决mapStrust整合lombok高版本问题

文章介绍了在Java17环境中使用Lombok1.18.24及以上版本与MapStruct集成时遇到的问题,特别是关于继承的实体类缺少set方法生成。解决方案包括使用mapStruct1.5.5.final,配合lombok-mapstruct-binding插件,并确保在maven-compiler-plugin中正确配置了annotationProcessorPaths。同时,实体类需添加@EqualsAndHashCode和@ToString注解以调用父类方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:mapStrust整合lombok,对于继承的实体类,最外层的类不会生成set方法,问题在于lombok高版本打破了类之间继承树的概念


一、java17引入lombok

lombok必须在1.18.24以上,否则打包无法通过

二、mapStrust导入问题

1:建议mapStrust选择1.5.5.final

2:必须搭配lombok-mapstruct-binding插件,以及mapStrust-process

3:加入path配置打包工具

4:依赖引入时,lombok在最前面

<!--            lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>

            <!-- MapStruct -->
            <dependency>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct</artifactId>
                <version>${mapstruct.version}</version>
            </dependency>

            <dependency>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>${mapstruct.version}</version>
            </dependency>
<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin.version}</version>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                        <release>>${java.version}</release>
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.mapstruct</groupId>
                                <artifactId>mapstruct-processor</artifactId>
                                <version>${mapstruct.version}</version>
                            </path>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>${lombok.version}</version>
                            </path>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok-mapstruct-binding</artifactId>
                                <version>${lombok-mapstruct-binding.version}</version>
                            </path>
                        </annotationProcessorPaths>
                    </configuration>
</plugin>

三:实体类加入注解

@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值