本來(lái)在mac上這個(gè)項(xiàng)目編譯一直沒(méi)有問(wèn)題,然后今天我把項(xiàng)目轉(zhuǎn)到windows系統(tǒng)上編譯辫红,就報(bào)錯(cuò)了
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"?
剛開(kāi)始一直以為是MapStruct的問(wèn)題,我用的版本是1.3.1.Final
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.3.1.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.1.Final</version>
<scope>provided</scope>
</dependency>
于是我就換到最新的版本1.4.2.Final祝辣,但是還是一樣報(bào)錯(cuò)
后來(lái)百度了下贴妻,發(fā)現(xiàn)也有人遇到過(guò),說(shuō)是和lombok版本不兼容蝙斜,導(dǎo)致獲取不到對(duì)象的get名惩,set方法
我測(cè)試了下,直接實(shí)例化DiaryResult的對(duì)象乍炉,是有g(shù)et绢片,和set,那么應(yīng)該就是mapstruct在編譯生成代碼的時(shí)候岛琼,讀取不到get底循,set方法
也看到說(shuō)要在pom中加maven插件,如下槐瑞,但是我試了下還是不行
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct-version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
雖然不行熙涤,但是這個(gè)人說(shuō):
確保 Lombok 最低版本為 1.18.16
annotationProcessorPaths 中,mapstruct-processor 的配置要在 lombok 之后
于是我就將lombok也改為較新版本1.18.20困檩,真的可以了祠挫!
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.2.Final</version>
<scope>provided</scope>
</dependency>
然后我又把plugin也刪除,結(jié)果也是可以的悼沿,用了mapstruct-processor等舔,看來(lái)是可以不依賴(lài)maven-plugin的
問(wèn)題完美解決,搞了1天半糟趾,真是心力憔悴慌植,java這種依賴(lài)兼容太操蛋了
問(wèn)題是原來(lái)在mac上使用老版本是好的甚牲,切換到windows就有問(wèn)題,這個(gè)問(wèn)題是真詭異