MapStruct と Lombok の互換性の問題: 結果タイプの不明なプロパティ
問題ステートメント:
MapStruct と Lombok の両方を一緒に使用すると、「不明」というエラーが発生します。プロパティ」を結果の型に含めます。この問題は、Lombok アノテーションがゲッターとセッターを削除しているため、MapStruct がターゲット DTO クラスでプロパティを見つけられない場合に発生します。
原因:
Maven は MapStruct プロセッサを使用していますが、 Lombok プロセッサではありません。 Maven 設定の annotationProcessorPaths は、どのプロセッサを使用するかを指定します。
解決策:
オプション 1: Lombok 依存関係を AnnotationProcessorPaths に追加する
Maven コンパイラを変更するLombok と MapStruct アノテーション プロセッサの両方を含めるプラグイン設定:
<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>
Lombok バージョン 1.18.16 以降の場合、lombok-mapstruct-binding 依存関係も追加します:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </dependency>
オプション 2: MapStruct プロセッサを追加依存関係
mapstruct-processor の依存関係を依存関係に追加し、annotationProcessorPaths を削除します。
<dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </dependency>
追加の注意:
IntelliJ でのアノテーション処理では、既知の理由により、提供された依存関係として mapstruct-processor を追加します。問題 (IDEA-150621)。
以上がLombok で使用した場合の MapStruct の「不明なプロパティ」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。