Heim > Java > javaLernprogramm > Hauptteil

Wie kann der Fehler „Unbekannte Eigenschaft' von MapStruct bei Verwendung mit Lombok behoben werden?

Patricia Arquette
Freigeben: 2024-11-23 16:28:18
Original
479 Leute haben es durchsucht

How to Resolve MapStruct's

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage