如何将 MapStruct 与 Eclipse 正确集成?(包括Lombok java代理)

And*_*aba 7 java eclipse lombok mapstruct

我愿意在一些官方项目中使用 MapStruct,所以我决定先对其进行一些测试;我需要让它与 eclipse 集成工作,并遵循 MapStruct 网站上提供的所有说明,但是......到目前为止还没有运气。有没有人成功地进行了这种整合?如果是的话,我会错过什么?

我的测试从更大的东西开始,但是当我意识到它不起作用时,我决定使用一个更小的例子,所以我这样做了:

...无法说服 eclipse 自动生成映射器实现,我什至在 pom.xml 文件中添加了 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>
Run Code Online (Sandbox Code Playgroud)

预期结果是:

  • 保存映射接口时在“目标/生成源/注释”下找到我重新生成的类
  • (如http://mapstruct.org/documentation/dev/reference/html/所述, “它将设置 MapStruct 注释处理器,以便它在 IDE 中运行,每当您保存映射器类型时。整洁,不是吗? ?”)
  • 但不要
  • 我只能通过“mvn clean install”生成类,这很好但不是那么方便

重要编辑:我也在使用 lombok javaagent

And*_*aba 4

我最终找到了问题的解决方案(=D)

该问题确实与 Lombok java 代理和 MapStruct 之间的不兼容有关。要让它发挥作用,只需按照 Pavel 在上一篇文章中建议的操作即可:

[...]只需删除 lombok.jar 内的 SPI 注册(通过删除 META-INF/services/org.mapstruct.ap.spi.AstModifyingAnnotationProcessor)[...]