首页 > Java > java教程 > 为什么我的项目同时使用 MapStruct 和 Lombok 时无法编译?

为什么我的项目同时使用 MapStruct 和 Lombok 时无法编译?

Linda Hamilton
发布: 2024-12-01 09:09:18
原创
731 人浏览过

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

MapStruct 和 Lombok 集成,项目未编译

问题:

使用 MapStruct 和Lombok 一起在一个项目中,由于未知属性“id”而出现错误使用 @Getter 和 @Setter 注解删除 getter 和 setter 时的结果类型。

解决方案:

问题源于 Maven 仅使用 MapStruct 处理器而不是 Lombok处理器。为了解决这个问题,有两个选项:

选项 1:将 Lombok 依赖添加到注释处理器路径

修改 pom.xml 中的 maven-compiler-plugin 配置为将 Lombok 依赖项包含在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>
登录后复制

选项 2:添加 MapStruct-Processor 依赖

或者,将 mapstruct-processor 依赖添加到 pom.xml 中的依赖项并删除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>
登录后复制

附加说明:

  • 对于 Lombok 1.18.16 及更高版本,在annotationProcessorPaths 中包含 lombok-mapstruct-binding 依赖项,如下所示在选项 1 中。
  • 确保MapStruct 处理器在 pom.xml 依赖项中标记为“已提供”,以在 IntelliJ 中启用注释处理。
  • 如果在实施上述解决方案后此问题仍然存在,请验证您的 Java 和 MapStruct 版本是否兼容。请参阅最新的 MapStruct 文档以获取兼容性信息。

以上是为什么我的项目同时使用 MapStruct 和 Lombok 时无法编译?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板