Heim >Java >javaLernprogramm >Warum erkennt MapStruct die @Getter- und @Setter-Annotationen von Lombok nicht und wie kann ich das Problem beheben?
Die Integration von MapStruct und Lombok kann zum Fehler „Unbekannte Eigenschaft“ führen ... im Ergebnistyp ...“, wenn @Getter- und @Setter-Annotationen für Entitäts- und DTO-Klassen zusammen verwendet werden. Dies geschieht, obwohl die Versionen beider Bibliotheken kompatibel sind.
Das Problem entsteht, weil Maven ausschließlich den MapStruct-Prozessor verwendet und den Lombok-Prozessor ignoriert. Um dieses Problem zu beheben:
Fügen Sie in der Maven-Compiler-Plugin-Konfiguration die Lombok-Abhängigkeit zur AnnotationProcessorPaths-Liste hinzu:
<annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${org.projectlombok.version}</version> </path> ... </annotationProcessorPaths>
Für Lombok 1.18.16 und höher fügen Sie außerdem Folgendes hinzu path:
<path> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </path>
Alternativ können Sie den MapStruct-Prozessor als Abhängigkeit hinzufügen und die AnnotationProcessorPaths:
<dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </dependency> </dependencies>
entfernen HINWEIS: Option 1 wird empfohlen, um sicherzustellen, dass in der keine internen MapStruct-Klassen referenziert werden Code.
Um die Annotationsverarbeitung in IntelliJ zu aktivieren, fügen Sie den MapStruct-Prozessor aufgrund von [IntelliJ-Problem IDEA-150621](https://youtrack.jetbrains.com) als bereitgestellte Abhängigkeit hinzu /issue/IDEA-150621).
Das obige ist der detaillierte Inhalt vonWarum erkennt MapStruct die @Getter- und @Setter-Annotationen von Lombok nicht und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!