Heim > Java > javaLernprogramm > Warum kann mein Projekt nicht kompiliert werden, wenn MapStruct und Lombok zusammen verwendet werden?

Warum kann mein Projekt nicht kompiliert werden, wenn MapStruct und Lombok zusammen verwendet werden?

Linda Hamilton
Freigeben: 2024-12-01 09:09:18
Original
732 Leute haben es durchsucht

Why Does My Project Fail to Compile When Using MapStruct and Lombok Together?

MapStruct- und Lombok-Integration mit Projekt wird nicht kompiliert

Problem:

Bei Verwendung von MapStruct und Lombok in einem Projekt zusammen, entstehen bei Gettern und Settern Fehler aufgrund der unbekannten Eigenschaft „id“ im Ergebnistyp werden mit @Getter- und @Setter-Annotationen entfernt.

Lösung:

Das Problem ist darauf zurückzuführen, dass Maven nur den MapStruct-Prozessor, nicht jedoch den Lombok-Prozessor verwendet. Um dieses Problem zu beheben, stehen zwei Optionen zur Verfügung:

Option 1: Lombok-Abhängigkeit zu Annotation-Prozessorpfaden hinzufügen

Ändern Sie die Maven-Compiler-Plugin-Konfiguration in pom.xml in Nehmen Sie die Lombok-Abhängigkeit in die auf annotationProcessorPaths:

<!-- Maven Compiler Configuration -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.6.1</version>
    <configuration>
        <!-- ... Existing Configuration Snippet -->

        <annotationProcessorPaths>
            <!-- Lombok Dependency -->
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${org.projectlombok.version}</version>
            </path>

            <!-- MapStruct Dependency -->
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>${org.mapstruct.version}</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>
Nach dem Login kopieren

Option 2: MapStruct-Processor-Abhängigkeit hinzufügen

Alternativ können Sie die Mapstruct-Processor-Abhängigkeit zu den Abhängigkeiten in pom.xml hinzufügen und entfernen annotationProcessorPaths:

<!-- Maven Dependencies -->
<dependencies>
    <!-- ... Existing Dependencies Snippet -->

    <!-- MapStruct Processor Dependency -->
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
</dependencies>
Nach dem Login kopieren

Zusätzliche Hinweise:

  • Fügen Sie für Lombok 1.18.16 und höher die Abhängigkeit „lombok-mapstruct-binding“ in die annotationProcessorPaths ein, wie gezeigt in Option 1.
  • Stellen Sie sicher, dass die Der MapStruct-Prozessor ist in den pom.xml-Abhängigkeiten als „bereitgestellt“ markiert, um die Annotationsverarbeitung in IntelliJ zu ermöglichen.
  • Wenn dieses Problem nach der Implementierung der oben genannten Lösungen weiterhin besteht, überprüfen Sie, ob Ihre Java- und MapStruct-Versionen kompatibel sind. Informationen zur Kompatibilität finden Sie in der neuesten MapStruct-Dokumentation.

Das obige ist der detaillierte Inhalt vonWarum kann mein Projekt nicht kompiliert werden, wenn MapStruct und Lombok zusammen verwendet 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