记录使用Mapstruct和Lombook后无法编译通过的问题

本来在mac上这个项目编译一直没有问题,然后今天我把项目转到windows系统上编译,就报错了

D:\www\five-years\core\src\main\java\com\fiveYears\mapStruct\DiaryMapStruct.java:17:5
java: Unknown property "username" in result type com.fiveYears.pojo.result.DiaryResult. Did you mean "null"?

刚开始一直以为是MapStruct的问题,我用的版本是1.3.1.Final


    org.projectlombok
    lombok
    1.16.6
    provided


    org.mapstruct
    mapstruct
    1.3.1.Final


    org.mapstruct
    mapstruct-processor
    1.3.1.Final
    provided

于是我就换到最新的版本1.4.2.Final,但是还是一样报错
后来百度了下,发现也有人遇到过,说是和lombok版本不兼容,导致获取不到对象的get,set方法
我测试了下,直接实例化DiaryResult的对象,是有get,和set,那么应该就是mapstruct在编译生成代码的时候,读取不到get,set方法

也看到说要在pom中加maven插件,如下,但是我试了下还是不行


    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.8.1
            
                1.8
                1.8
                
                    
                        org.projectlombok
                        lombok
                        ${lombok.version}
                    
                    
                        org.projectlombok
                        lombok-mapstruct-binding
                        0.2.0
                    
                    
                        org.mapstruct
                        mapstruct-processor
                        ${mapstruct-version}
                    

                
            
        
    
        

虽然不行,但是这个人说:
确保 Lombok 最低版本为 1.18.16
annotationProcessorPaths 中,mapstruct-processor 的配置要在 lombok 之后

于是我就将lombok也改为较新版本1.18.20,真的可以了!


    org.projectlombok
    lombok
    1.18.20
    provided


    org.mapstruct
    mapstruct
    1.4.2.Final


    org.mapstruct
    mapstruct-processor
    1.4.2.Final
    provided

然后我又把plugin也删除,结果也是可以的,用了mapstruct-processor,看来是可以不依赖maven-plugin的
问题完美解决,搞了1天半,真是心力憔悴,java这种依赖兼容太操蛋了

问题是原来在mac上使用老版本是好的,切换到windows就有问题,这个问题是真诡异

你可能感兴趣的:(记录使用Mapstruct和Lombook后无法编译通过的问题)