我愿意在某些官方项目中使用MapStruct,因此我决定先对其进行一些测试;我需要使其与eclipse集成在一起并遵循MapStruct网站上提供的所有说明,但是...到目前为止还算不上什么。 有人成功进行了这种整合吗?,如果是,我会缺少什么?
我的测试从一个更大的东西开始,但是当我意识到它不起作用时,我决定使用一个较小的示例,所以我就是这样做的:
...无法说服Eclipse自动生成映射器实现,我什至在pom中添加了jdt_apt行。
这是pom.xml的一小段-有关完整代码,请参阅mapstruct-clone项目。
<properties>
<org.mapstruct.version>1.3.0.Final</org.mapstruct.version>
<m2e.apt.activation>jdt_apt</m2e.apt.activation>
</properties>
预期结果将是:
重要编辑:我也在使用lombok javaagent
答案 0 :(得分:1)
我最终找到了解决问题的方法(= D)
该问题确实与Lombok Java代理和MapStruct之间的不兼容有关。 要使其正常工作,请按照Pavel在上一篇文章中的建议进行操作,它将起作用:
[...]只需删除lombok.jar中的SPI注册(通过删除META-INF / services / org.mapstruct.ap.spi.AstModifyingAnnotationProcessor)[...]
答案 1 :(得分:0)
我实际上面临着一个非常相似的问题,并且以略有不同的方式解决了这个问题。
如OP所述,请确保在pom.xml中声明了此属性:
<properties>
...
<m2e.apt.activation>jdt_apt</m2e.apt.activation>
...
</properties>
显然,必须安装eclipse的m2e-apt插件: https://marketplace.eclipse.org/content/m2e-apt
在pom.xml中,确保提供了mapstruct-processor和lombok。
最后但并非最不重要的一点:我必须通过将org.mapstruct.ap.spi.AstModifyingAnnotationProcessor.class
文件添加到jar中来调整lombok.jar(请参阅https://github.com/mapstruct/mapstruct/issues/1159#issuecomment-328974483)。
已使用Eclipse 2019-03,Lombok 1.18.6和Mapstruct 1.2.0.Final进行了测试。
希望这会有所帮助!