【问题标题】:How to get Eclipse to generate MapStruct Mappers using Gradle如何让 Eclipse 使用 Gradle 生成 MapStruct 映射器
【发布时间】:2018-01-13 01:30:29
【问题描述】:

是否有任何特殊的配置可以让 eclipse 生成 Mapstruct 映射器?目前它们没有被生成。

它们确实在 gradle 构建中生成,但我无法让它们生成,因此我可以在开发中使用它们。

我将此添加到我的 build.gradle:

plugins {
    id "net.ltgt.apt" version "0.10"
}
dependencies {
    compile "org.mapstruct:mapstruct-jdk8:$mapstructVersion"
    apt "org.mapstruct:mapstruct-processor:$mapstructVersion"
}

我还为 MapStruct 添加了 eclipse 插件(虽然我相信这实际上不是必需的???)

然后我去了项目 > 属性 > Java 编译器 > 注释处理:

但是 .apt_generated 是空的,我错过了什么?

我正在使用:

Eclipse:版本:Oxygen Release (4.7.0) Build id:20170620-1800

MapStruct 版本 1.2.0.CR1(也尝试 1.1.0.FINAL)

【问题讨论】:

    标签: java eclipse gradle mapstruct


    【解决方案1】:

    所以经过一番搜索后,我确定解决方案是您必须在 gradle 中手动运行 eclipse 任务。如果成功,您应该会看到类似以下内容:

    解决方案来自阅读 https://github.com/tbroyer/gradle-apt-plugin 文档,其中指出:

    使用 Buildship 时,您必须手动运行 eclipseJdtApt 和 eclipseFactorypath 任务以生成 Eclipse 配置文件,然后运行 ​​eclipseJdt 任务或手动启用注释处理:在项目属性 → Java 编译器 → 注释处理中,检查启用注释处理。请注意,虽然所有这些任务都依赖于 eclipse 任务,但该任务与 Buildship 不兼容,因此您必须显式运行上述两个或三个任务而不运行 eclipse 任务。

    它指出 eclipse 任务与 buildship 不兼容,但这似乎已修复(我运行了 eclipse 任务并且没有问题):

    不过,我确实遇到了与 Buildship 不兼容的 cleanEclipse 任务问题。

    毕竟*MapperImpl.java 类是在<project_root>/.apt_generated 中生成的

    【讨论】:

    • 很高兴您设法找到解决问题的方法。我还为我们的网站创建了一个issue,因此我们可以将您的答案整合到网站的IDE Support 部分。
    • 如果您也使用 Lombok,您可能会在没有桨的情况下上岸。
    • @Justin 目前在 Eclipse 中同时使用 Lombok 1.16.18 和 Mapstruct 1.2.0.Final 似乎存在问题(AFAIK 它适用于其他 IDE,当然也适用于 Gradle)参见 github.com/mapstruct/mapstruct/issues/1159github.com/rzwitserloot/lombok/issues/1359org.mapstruct.ap.spi.AstModifyingAnnotationProcessor.class 文件添加到lombok.jar 的解决方法对我有用,希望它会尽快修复。
    • @Neilos 幸运的是,我正在使用 Gradle,所以这基本上是我的解决方法。我尝试将该类添加到 JAR,但 IIRC 要么 JAR 中的包结构不同,要么我只是对我应该做的事情感到困惑。我正在使用最新的 Eclipse Oxygen,它还没有固定在那里。我分享你的希望! :-D
    • @Justin 这里是修改后的 JAR,在 eclipse 中安装 lombok 后,将 lombok.jar 替换为 1drv.ms/u/s!AucAWW_UyaMUhVOvKLNC5twrDVDh
    猜你喜欢
    • 2019-06-21
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 2021-11-22
    • 2021-05-10
    • 2018-05-07
    • 2016-07-14
    • 2020-07-14
    相关资源
    最近更新 更多