Rumah >Java >javaTutorial >Mengapa Projek Saya Gagal Disusun Apabila Menggunakan MapStruct dan Lombok Bersama?

Mengapa Projek Saya Gagal Disusun Apabila Menggunakan MapStruct dan Lombok Bersama?

Linda Hamilton
Linda Hamiltonasal
2024-12-01 09:09:18742semak imbas

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

MapStruct dan Integrasi Lombok dengan Projek Tidak Menyusun

Isu:

Apabila menggunakan MapStruct dan Lombok bersama-sama dalam projek, ralat timbul kerana sifat "id" yang tidak diketahui dalam jenis hasil apabila getter dan setter dialih keluar dengan anotasi @Getter dan @Setter.

Penyelesaian:

Isu ini berpunca daripada Maven menggunakan hanya pemproses MapStruct tetapi bukan pemproses Lombok. Untuk menangani perkara ini, dua pilihan tersedia:

Pilihan 1: Tambahkan Ketergantungan Lombok pada Laluan Pemproses Anotasi

Ubah suai konfigurasi maven-compiler-plugin dalam pom.xml ke termasuk pergantungan Lombok dalam 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>

Pilihan 2: Tambah MapStruct-Processor Dependency

Sebagai alternatif, tambahkan mapstruct-processor dependencies pada dependencies dalam pom.xml dan alih keluar 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>

Nota Tambahan:

  • Untuk Lombok 1.18.16 dan ke atas, sertakan kebergantungan lombok-mapstruct-binding dalam anotationProcessorPaths seperti yang ditunjukkan dalam Pilihan 1.
  • Pastikan bahawa pemproses MapStruct ditandakan sebagai "disediakan" dalam kebergantungan pom.xml untuk mendayakan pemprosesan anotasi dalam IntelliJ.
  • Jika isu ini berterusan selepas melaksanakan penyelesaian di atas, sahkan jika versi Java dan MapStruct anda serasi. Rujuk dokumentasi MapStruct terkini untuk maklumat keserasian.

Atas ialah kandungan terperinci Mengapa Projek Saya Gagal Disusun Apabila Menggunakan MapStruct dan Lombok Bersama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn