带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(9)

简介: 带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(9)

带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(8)https://developer.aliyun.com/article/1339756?groupCode=taobaotech

MapStruct是如何与Lombok共存的?

 

查阅MapStruct官方文档可以发现这样一段内容:

image.png

 

其中提到,MapStruct的annotation processor必须在Lombok的annotation processor生成完代码之后,才可以正常运行。

 

所以,这应该就是在导入dependencies时,必须先导入Lombok包,再导入MapStruct-processor包才可以正常运行的原因了。不过还有个问题没有解决:

 

Maven到底在哪里规定了annotation processor的载入顺序?难道每次创建工程时,必须记住这些包导入顺序么?

 

MapStruct官方推荐的导入流程

 

在进一步查看MapStruct官网时发现,其并没有将MapStruct-processor放dependencies中,而是放在了 annotationProcessorPaths层级下:

https://mapstruct.org/documentation/installation/

  ...
<properties>
<org.mapstruct.version>1.5.2.Final</org.mapstruct.version>
</properties>
  ...
<dependencies>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source> <!-- depending on your project -->
<target>1.8</target> <!-- depending on your project -->
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<!-- other annotation processors -->
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>

 

 

 


 

这又是为什么呢?

查阅Maven官方文档,对于有这样一段描述:

If specified, the compiler will detect annotation processors only in those classpath elements. If omitted, the default classpath is used to detect annotation processors. The detection itself depends on the configura- tion of annotationProcessors.

即如果有层级,则使用这个层级声明注解处理器的顺序执行,如果没有,则按照默 认classpath的顺序来使用注解处理器。

 

地址:https://maven.apache.org/plugins/maven-compiler-plugin/com-pile-mojo.html#annotationProcessorPaths

地址:https://maven.apache.org/plugins/maven-compiler-plugin/com-pile-mojo.html#annotationProcessorPaths

 

带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(10) https://developer.aliyun.com/article/1339754?groupCode=taobaotech

 

相关文章
节流、防抖
节流、防抖
298 2
|
Linux
Linux tar命令一个有用的参数--strip-component
在解压文件的时候,如果压缩包中的文件存在多级目录。解压出来的时候如果你不想要这些多级目录,你就可以使用–strip-component参数来实现。
1221 0
|
开发框架 运维 Kubernetes
Ingress-nginx工作原理和实践
本文记录/分享 目前项目的 K8s 部署结构和请求追踪改造方案
Ingress-nginx工作原理和实践
|
前端开发 JavaScript 容器
【React高级技术】合成事件以及 Test Utilities测试框架在Facebook内部进行测试
【React高级技术】合成事件以及 Test Utilities测试框架在Facebook内部进行测试
|
分布式计算 搜索推荐 大数据
大数据入门
大数据入门
213 0
大数据入门
|
SQL Java 数据库连接
JAVA插入sql代码
插入数据 import java.sql.*; /** * @version 2012-02-22 * @author */ public class InsertDemo { public static void main(String[] args) thr...
947 0
|
15天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
29852 102
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
5天前
|
应用服务中间件 API 网络安全
3分钟汉化OpenClaw,使用Docker快速部署启动OpenClaw(Clawdbot)教程
2026年全新推出的OpenClaw汉化版,是基于Claude API开发的智能对话系统本土化优化版本,解决了原版英文界面的使用壁垒,实现了界面、文档、指令的全中文适配。该版本采用Docker容器化部署方案,开箱即用,支持Linux、macOS、Windows全平台运行,适配个人、企业、生产等多种使用场景,同时具备灵活的配置选项和强大的扩展能力。本文将从项目简介、部署前准备、快速部署、详细配置、问题排查、监控维护等方面,提供完整的部署与使用指南,文中包含实操代码命令,确保不同技术水平的用户都能快速落地使用。
4257 0