lombok和mapstruct配合转换bean后,mapstruct生成空的实现.
- 如果出现mapstruct和lombok配合生成的bean实现类中是空实现,没有对生成bean进行setter赋值.那么就需要在
maven-compiler-plugin
插件下多配置一个lombok-mapstruct-binding
注解处理器来绑定mapstruct
和lombok
.
- pom文件内容如下:
<properties>
<java.version>1.8</java.version>
<org.mapstruct.version>1.4.2.Final</org.mapstruct.version>
</properties>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.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>0.2.0</version> <!-- 如果是0.1.0 有可能出现生成了maptruct的实现类,但该类只创建了对象,没有进行赋值 -->
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
- maven多项目打包时,在父项目的pom中配置maven打包插件:
<!-- spring boot 与 maven结合打包插件 , 打包期间用到的-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layers>
<enabled>true</enabled>
</layers>
<excludes>
<!-- 打包的时候忽略lombok,因为lombok值在编译器起作用 -->
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
- 在子项目中如果是被依赖项目且没有项目入口文件的,则需要在子项目的pom中屏蔽打包插件,比如我的
lj-buisness-core
项目没有项目入口文件***Application.java
,pom配置如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
- 当然如果子项目有入口文件即
LjCenteringBusinessCouponsApplication.java
则该子项目的pom文件不需要配置spring-boot-maven-plugin
插件,让其从父项目中继承即可.