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
Linda Hamiltonoriginal
2024-12-01 09:09:18732parcourir

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>

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>

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!

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