mapstruct uses,MapStructPlus 1.3.1 版本发布,更好地适配 IDEA 本地开发

科技资讯 投稿 7700 0 评论

mapstruct uses,MapStructPlus 1.3.1 版本发布,更好地适配 IDEA 本地开发

mapstruct uses,今晚上更新了两个版本,1.3.0和1.3.1,主要为了解决 IDEA 部分编译时,出现的各种莫名奇妙的问题。

更新日志

    新增编译参数的配置方式,解决 IDEA 部分编译导致的一系列问题;

  • 更好地适配本地IDEA开发;

  • AutoMapper 增加 imports 支持

问题描述

一段时间以来,有好几位朋友反馈过 MapStructPlus 在使用时,修改了类,启动会报错,但重新执行 mvn clean compile 又恢复了正常。

就是这么一个莫名其妙的问题,最近终于想到了原因!

原因

首先,该问题出现的前提是在项目中添加了 MapStructPlus 的配置类,之后在日常的开发中,修改了需要转换的 Bean 对象时,而 IDEA 的编译方式,是只编译修改过的类,所以,刚刚修改过的类,重新编译时,并没有加载到原先的配置类,所以没有按照预期来生成转换类,最终引发了各种各样奇怪的问题出现,而重新执行 mvn clean compile 会把错误编译生成的转换类删掉,重新编译整个项目,故又能恢复。

解决方案

提供了两种解决方案:

    将所有配置项,都通过编译参数传递给编译器;

  • 通过编译参数,指定配置类名。

这样子,无论是部分编译,还是全量编译,都能保证配置相同。

示例

这里拿第二种方式举例,假设在 maven 环境中,原来配置如下:

@MapperConfig(adapterClassName = "DemoConvertMapperAdapter",     adapterPackage = "io.github.linpeilie.adapter",     mapAdapterClassName = "DemoMapConvertMapperAdapter") public class MapStructPlusConfiguration { }

使用新版本后,可以在编译参数中,指定MapStructPlus的配置类名称,如下:

<plugin>   <groupId>org.apache.maven.plugins</groupId>   <artifactId>maven-compiler-plugin</artifactId>   <version>3.8.0</version>   <configuration>     <source>${maven.compiler.source}</source>     <target>${maven.compiler.target}</target>     <annotationProcessorPaths>       <path>         <groupId>org.projectlombok</groupId>         <artifactId>lombok</artifactId>         <version>${lombok.version}</version>       </path>       <path>         <groupId>io.github.linpeilie</groupId>         <artifactId>mapstruct-plus-processor</artifactId>         <version>${mapstruct-plus.version}</version>       </path>       <path>         <groupId>org.projectlombok</groupId>         <artifactId>lombok-mapstruct-binding</artifactId>         <version>0.2.0</version>       </path>     </annotationProcessorPaths>     <compilerArgs>       <arg>-Amapstruct.plus.mapperConfigClass=com.tutelary.MapStructPlusConfiguration</arg>     </compilerArgs>   </configuration> </plugin>

其他具体的配置项,可以参考 MapStructPlus - 指南

与 IDEA 适配仍存在的问题

在以下场景,需要重新执行 mvn clean compile:

    当添加新的需要转换的类,并且该类与其他类有嵌套关系时,部分编译不能生成两者的自动转换;

  • 当删除已经转换的类时;

  • 修改配置时。

结语

官网打不开,是因为域名在备案,不是跑路了,可以访问国内站点镜像

编程笔记 » mapstruct uses,MapStructPlus 1.3.1 版本发布,更好地适配 IDEA 本地开发

赞同 (41) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽