如何让Eclipse使用Gradle生成MapStruct Mappers

时间:2017-08-05 04:20:42

标签: java eclipse gradle mapstruct

是否有任何特殊的配置来获取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插件(虽然我相信这实际上不是必需的 ???)

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

screenshot

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

我正在使用:

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

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

1 个答案:

答案 0 :(得分:7)

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

enter image description here

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

  

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

它声明eclipse任务与buildship不兼容,但似乎已修复(我运行eclipse任务并没有问题):

enter image description here

但我确实遇到了cleanEclipse任务的问题,这似乎与Buildship不兼容。

毕竟,在*MapperImpl.java

中生成了<project_root>/.apt_generated个类