2017-08-05 621 views
1

是否有任何特殊的copnfiguration来获取eclipse来生成Mapstruct mappers?他们确实没有被生成。如何让Eclipse使用Gradle生成MapStruct Mappers

它们在gradle build中生成,但我无法让它们生成,所以我可以在开发中使用它们。

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

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

我也加入了Eclipse插件MapStruct(虽然我相信这不是真正需要 ???)

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

screenshot

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

我使用:

的Eclipse:版本:释氧(4.7.0)建立ID:20170620-1800

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

回答

3

因此,经过一番搜索,我确定解决方案是你必须在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

+1

伟大的,你设法找出解决您的问题产生。我还为我们的网站创建了一个[issue](https://github.com/mapstruct/mapstruct.org/issues/63),所以我们可以将您的答案集成到[IDE支持]中(http://mapstruct.org/documentation/ide-support /)网站的一部分。 – Filip

+0

如果你也使用龙目岛,你可能会没有桨的小溪。 – Justin

+1

@Justin现在似乎是使用龙卷风1.16.18和Mapstruct 1.2.0的问题。最终'在Eclipse中(AFAIK它可以在其他IDE中工作,当然可以在Gradle中使用)请参阅https://github.com/mapstruct/mapstruct/issues/1159和https://github.com/rzwitserloot/lombok/issues/1359将'org.mapstruct.ap.spi.AstModifyingAnnotationProcessor.class'文件添加到'lombok.jar'的解决方法适用于我,希望它很快就会被修复。 – Neilos