一、lombok的支持

因为ruoyi的根pom的dependencyManagement里面有下面的import

   <!-- SpringBoot的依赖配置-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.5.15</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

上面的这个引入里面有lombok的导入了,版本是1.8.26,所以我们也导入1.8.26

在根pom里面增加

1、properties中加

<lombok.version>1.18.26</lombok.version>

2、dependencyManagement中增加

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

3、所以在需要的子module里面可以直接引入lombok(为了可以所有模块里面都可以使用,可以再ruoyi-common里面引入)

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

二、mapstruct的支持

在根pom里面增加

1、properties中加

<mapstruct.version>1.4.3.Final</mapstruct.version>

2、dependencyManagement中增加

<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>
    <scope>provided</scope>
</dependency>

3、所以在需要的子module里面可以直接引入mapstruct(为了可以所有模块里面都可以使用,可以再ruoyi-common里面引入)

<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>
</dependency>

三、让编译时生成需要的代码

1、调整了编译插件的版本号

3.1 变为 3.8.1

2、增加了注解处理器

<annotationProcessorPaths>
    <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.26</version>
    </path>
    <path>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${mapstruct.version}</version>
    </path>
</annotationProcessorPaths>

四、lombok与mapstruct冲突问题

mapstruct依赖lombok生成的setter 、getter方法,所以编译的需要有个先后顺序,就是上面的annotationProcessorPaths 中 lombok一定要在前面

五、mapstruct 生成实现类时与 @build 注解冲突的问题(会导致mapstruct的@AfterMapping 注解的方法不被调用)

原因: 由于Lombok的@Builder注解影响, 在MapStruct编译时, 会用BeanBuilder.build()完成目标对象的实例化

解决: 在转化的方法上加注解(参考:https://github.com/mapstruct/mapstruct/issues/1556)

 @BeanMapping(builder = @Builder(disableBuilder = true))
Logo

快速构建 Web 应用程序

更多推荐