MapStruct- und Lombok-Kompatibilitätsproblem: Unbekannte Eigenschaft im Ergebnistyp
Problembeschreibung:
Bei der gemeinsamen Verwendung von MapStruct und Lombok tritt ein Fehler mit der Meldung „Unbekannte Eigenschaft“ im Ergebnistyp auf. Dieses Problem tritt auf, wenn MapStruct aufgrund von Lombok-Annotationen, die Getter und Setter entfernen, keine Eigenschaft in der Ziel-DTO-Klasse finden kann.
Ursache:
Maven verwendet jedoch den MapStruct-Prozessor nicht der Lombok-Prozessor. Die annotationProcessorPaths in der Maven-Konfiguration geben an, welche Prozessoren verwendet werden sollen.
Lösung:
Option 1: Lombok-Abhängigkeit zu AnnotationProcessorPaths hinzufügen
Ändern Sie die Konfiguration des Maven-Compiler-Plugins so, dass beide enthalten sind Lombok- und MapStruct-Annotationsprozessoren:
<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>
Fügen Sie für Lombok-Versionen 1.18.16 und höher auch die Abhängigkeit „lombok-mapstruct-binding“ hinzu:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </dependency>
Option 2: Hinzufügen MapStruct-Prozessor als Abhängigkeit
Fügen Sie den hinzu Mapstruct-Prozessor-Abhängigkeit zu Ihren Abhängigkeiten und entfernen Sie die annotationProcessorPaths:
<dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </dependency>
Zusätzlicher Hinweis:
Um die Annotationsverarbeitung in IntelliJ sicherzustellen, fügen Sie den Mapstruct-Prozessor als hinzu bereitgestellte Abhängigkeit aufgrund eines bekannten Problems (IDEA-150621).
Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Unbekannte Eigenschaft' von MapStruct bei Verwendung mit Lombok behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!