ホームページ  >  記事  >  Java  >  Lombok で使用した場合の MapStruct の「不明なプロパティ」エラーを解決する方法

Lombok で使用した場合の MapStruct の「不明なプロパティ」エラーを解決する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-23 16:28:18480ブラウズ

How to Resolve MapStruct's

MapStruct と Lombok の互換性の問題: 結果タイプの不明なプロパティ

問題ステートメント:

MapStruct と Lombok の両方を一緒に使用すると、「不明」というエラーが発生します。プロパティ」を結果の型に含めます。この問題は、Lombok アノテーションがゲッターとセッターを削除しているため、MapStruct がターゲット DTO クラスでプロパティを見つけられない場合に発生します。

原因:

Maven は MapStruct プロセッサを使用していますが、 Lombok プロセッサではありません。 Maven 設定の annotationProcessorPaths は、どのプロセッサを使用するかを指定します。

解決策:

オプション 1: Lombok 依存関係を AnnotationProcessorPaths に追加する

Maven コンパイラを変更するLombok と MapStruct アノテーション プロセッサの両方を含めるプラグイン設定:

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

Lombok バージョン 1.18.16 以降の場合、lombok-mapstruct-binding 依存関係も追加します:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-mapstruct-binding</artifactId>
    <version>0.2.0</version>
</dependency>

オプション 2: MapStruct プロセッサを追加依存関係

mapstruct-processor の依存関係を依存関係に追加し、annotationProcessorPaths を削除します。

<dependencies>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>

追加の注意:

IntelliJ でのアノテーション処理では、既知の理由により、提供された依存関係として mapstruct-processor を追加します。問題 (IDEA-150621)。

以上がLombok で使用した場合の MapStruct の「不明なプロパティ」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。