[英]Mapstruct AnnotationProcessor with IntelliJ and Gradle
我正在嘗試使Mapstruct注釋處理器在Gradle項目的IntelliJ中工作。
理想情況下,我希望所有配置都位於gradle文件中,並且任何人都可以將項目導入IntelliJ並獲得完整的設置,而無需手動設置任何首選項。
但我對此可以妥協。
我正在將IntelliJ 2018.3和Gradle 5.0與Java 11一起使用(即最新和最好的)。 Mapstruct版本是1.2.0.FINAL。
我做了什么:
在我的build.gradle
配置了Mapstruct注釋處理器:
compile "org.mapstruct:mapstruct-jdk8:${mapstruct_version}" annotationProcessor "org.mapstruct:mapstruct-processor:${mapstruct_version}"
在“構建,執行,部署->構建工具-> Gradle-> Runner”下的“首選項”中選擇了“將IDE構建/運行操作委托給Gradle”
在目錄build/classes/java/main/com/myapp/mypackage/mapper/
我看到了MyMapperImpl.class
和MyMapperImpl.java
,因此代碼生成似乎可以正常工作。
現在,我希望當我選擇帶注釋的抽象MyMapper
類並按ctrl H時 ,生成的MyMapperImpl
出現在層次結構視圖中。
如果我手動將build/classes/java/main/
標記為“生成的源”目錄(我確實不想這樣做,請參見上文),則該類仍不會出現在層次結構中。 但是源代碼帶有很多錯誤,因為顯然沒有找到我項目中的類。
不用說:我可以從IntelliJ和命令行中完美運行使用映射器的測試。
使用這個 ,我的團隊也在使用mapstruct,我們在build.gradle中使用它,您還需要將idea
插件也用於gradle
def generatedSources = "$buildDir/generated"
def generatedOutputDir = file("$generatedSources")
/*
create generated .java files in different folder than classes
In IntelliJ 2016.3.x: Enable Annotation Processing, then set generated sources,
relative to module output dir, at path '../../generated'
*/
compileJava {
doFirst {
generatedOutputDir.exists() || generatedOutputDir.mkdirs()
options.compilerArgs = [
'-s', "${generatedSources}"
]
}
}
idea {
module {
downloadSources = true
// tell intellij where to find generated sources
sourceDirs += generatedOutputDir
}
}
通過這種解決方法,即使沒有Gradle runner
運行程序,您也可以運行代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.