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
Libérer: 2024-11-24 19:38:49
original
850 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion
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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal