您现在的位置是:首页 > 文章详情

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

日期:2023-06-16点击:749

今晚上更新了两个版本,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

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

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

  • 修改配置时。

结语

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

原文链接:https://www.oschina.net/news/245636/mapstructplus-1-3-1
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章