2017-08-05 618 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