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

问题描述 投票:2回答:2

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

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

...无法说服eclipse自动生成mapper实现,我甚至将jdt_apt行添加到pom中。

这是pom.xml的一个片段 - 请参考他的mapstruct-clone项目以获取整个代码。

<properties>
    <org.mapstruct.version>1.3.0.Final</org.mapstruct.version>
    <m2e.apt.activation>jdt_apt</m2e.apt.activation>
</properties>

预期结果将是:

  • 保存映射界面时,在“target / generated-sources / annotations”下找到我重新生成的类
  • (正如http://mapstruct.org/documentation/dev/reference/html/所说“它将设置MapStruct注释处理器,因此无论何时保存映射器类型,它都可以在IDE中运行。整洁,不是吗?”)
  • 但不要
  • 我只能通过“mvn clean install”获得生成的类,这很好,但不是那么方便

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

java eclipse lombok mapstruct
2个回答
1
投票

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

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

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


0
投票

我实际上遇到了一个非常相似的问题,并以稍微不同的方式解决了它。

  1. 如OP所述,确保在pom.xml中声明此属性: qazxsw poi
  2. 显然必须安装eclipse的m2e-apt插件:<properties> ... <m2e.apt.activation>jdt_apt</m2e.apt.activation> ... </properties>
  3. 在pom.xml中,确保提供了mapstruct-processor和lombok。
  4. 最后但并非最不重要:我必须通过将https://marketplace.eclipse.org/content/m2e-apt文件添加到jar中来调整lombok.jar(请参阅org.mapstruct.ap.spi.AstModifyingAnnotationProcessor.class)。

使用Eclipse 2019-03,Lombok 1.18.6和Mapstruct 1.2.0.Final进行测试。

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.