MapStruct 和Lombok 兼容性問題:結果類型中的未知屬性
問題陳述:
同時使用MapStruct 和Lombok時,會出現錯誤,指出「未知結果類型中的「屬性」。當MapStruct 由於Lombok 註解刪除了getter 和setter 而無法在目標DTO 類別中找到屬性時,就會出現此問題。
原因:
Maven 正在使用MapStruct 處理器,但不是Lombok 處理器。配置中的annotationProcessorPaths 指定應使用哪些處理器。
修改Maven 編譯器外掛程式配置以包含Lombok 和MapStruct註解處理器:對於Lombok 版本1.18.16 及更高版本,也加入lombok-mapstruct-binding 依賴項:
選項2:新增MapStruct處理器作為依賴
加入mapstruct-processor依賴項並刪除annotationProcessorPaths:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${org.projectlombok.version}</version> </path> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin>
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </dependency>附加說明:
附加說明:
<dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </dependency>
附加說明中的註解處理,請將mapstruct-processor加入為提供的依賴項已知問題(IDEA-150621)。
以上是如何解決 MapStruct 與 Lombok 一起使用時的「未知屬性」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!