Maison > Java > javaDidacticiel > Pourquoi mon projet ne parvient-il pas à se compiler lorsque j'utilise MapStruct et Lombok ensemble ?

Pourquoi mon projet ne parvient-il pas à se compiler lorsque j'utilise MapStruct et Lombok ensemble ?

Linda Hamilton
Libérer: 2024-12-01 09:09:18
original
821 Les gens l'ont consulté

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

L'intégration de MapStruct et Lombok avec le projet ne se compile pas

Problème :

Lors de l'utilisation de MapStruct et Lombok ensemble dans un projet, des erreurs surviennent en raison de la propriété inconnue "id" dans le type de résultat lorsque les getters et les setters sont supprimés avec les annotations @Getter et @Setter.

Résolution :

Le problème vient du fait que Maven utilise uniquement le processeur MapStruct mais pas le processeur Lombok. Pour résoudre ce problème, deux options sont disponibles :

Option 1 : Ajouter une dépendance Lombok aux chemins du processeur d'annotation

Modifier la configuration maven-compiler-plugin dans pom.xml pour inclure la dépendance de Lombok dans le 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>
Copier après la connexion

Option 2 : Ajouter une dépendance MapStruct-Processor

Vous pouvez également ajouter la dépendance mapstruct-processor aux dépendances dans pom.xml et supprimer le 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>
Copier après la connexion

Notes supplémentaires :

  • Pour Lombok 1.18.16 et supérieur, incluez la dépendance lombok-mapstruct-binding dans annotationProcessorPaths comme indiqué dans l'option 1.
  • Assurez-vous que le Le processeur MapStruct est marqué comme « fourni » dans les dépendances pom.xml pour activer le traitement des annotations dans IntelliJ.
  • Si ce problème persiste après la mise en œuvre des solutions ci-dessus, vérifiez si vos versions Java et MapStruct sont compatibles. Reportez-vous à la dernière documentation MapStruct pour obtenir des informations sur la compatibilité.

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!

source:php.cn
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