Maison >Java >javaDidacticiel >Pourquoi MapStruct ne parvient-il pas à reconnaître les annotations @Getter et @Setter de Lombok, et comment puis-je y remédier ?

Pourquoi MapStruct ne parvient-il pas à reconnaître les annotations @Getter et @Setter de Lombok, et comment puis-je y remédier ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-24 19:38:49823parcourir

Why Does MapStruct Fail to Recognize Lombok's @Getter and @Setter Annotations, and How Can I Fix It?

Annotations @Getter et @Setter inconnues dans les mappages MapStruct avec Lombok

Description du problème

L'intégration de MapStruct et Lombok peut conduire à l'erreur « Propriété inconnue ... dans le type de résultat..." lors de l'utilisation des annotations @Getter et @Setter sur les classes d'entité et DTO ensemble. Cela se produit bien que les versions des deux bibliothèques soient compatibles.

Solution

Le problème se pose car Maven utilise exclusivement le processeur MapStruct, ignorant celui de Lombok. Pour résoudre ce problème :

Option 1 : Ajouter la dépendance Lombok au chemin du processeur d'annotation

Dans la configuration du plugin du compilateur Maven, ajoutez la dépendance Lombok à la liste annotationProcessorPaths :

<annotationProcessorPaths>
    <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${org.projectlombok.version}</version>
    </path>
    ...
</annotationProcessorPaths>

De plus, pour Lombok 1.18.16 et supérieur, ajoutez ce qui suit path :

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

Option 2 : Ajouter une dépendance au processeur MapStruct

Vous pouvez également ajouter le processeur MapStruct en tant que dépendance et supprimer l'annotationProcessorPaths :

<dependencies>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
</dependencies>
REMARQUE : L'option 1 est recommandée pour garantir qu'aucune classe MapStruct interne n'est référencée dans le code.

Configuration Intellij

Pour activer le traitement des annotations dans IntelliJ, ajoutez le processeur MapStruct en tant que dépendance fournie en raison du [problème IntelliJ IDEA-150621](https://youtrack.jetbrains.com /issue/IDEA-150621).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn