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

今晚上更新了两个版本,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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。