首頁 >Java >java教程 >為什麼我的專案同時使用 MapStruct 和 Lombok 時無法編譯?

為什麼我的專案同時使用 MapStruct 和 Lombok 時無法編譯?

Linda Hamilton
Linda Hamilton原創
2024-12-01 09:09:18729瀏覽

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

MapStruct 和Lombok 集成,項目未編譯

問題:

使用🎜>問題:

使用🎜>問題:

解決方案:

問題源自於 Maven 僅使用 MapStruct 處理器而不是 Lombok處理器。為了解決這個問題,有兩個選項:

選項1:將Lombok 依賴添加到註釋處理器路徑

<!-- 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>

修改pom.xml 中的maven-compiler- plugin 配置為將Lombok依賴項包含在annotationProcessorPaths:

選項 2:新增 MapStruct-Processor 依賴

<!-- 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>

或者,將 mapstruct-processor 依賴關係新增至 pom.xml中的相依性並刪除annotationProcessorPaths:

    附加說明:
  • 對於Lombok 1.18.16 及更高版本,在okannotation 它中包含-mapstruct-binding 依賴項,如下所示在選項1 中。
  • 確保MapStruct 處理器在 pom.xml 依賴項中標記為“已提供”,以在 IntelliJ 中啟用註釋處理。
如果在實作上述解決方案後此問題仍然存在,請驗證您的 Java 和 MapStruct 版本是否相容。請參閱最新的 MapStruct 文件以取得相容性資訊。

以上是為什麼我的專案同時使用 MapStruct 和 Lombok 時無法編譯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn