我尝试使用Intellij 2017 Ultimate来构建/运行使用MapStruct的Spring Boot应用程序。这是Gradle项目。我的问题是IntelliJ似乎没有运行MapStruct注释处理器。我意识到我可以将IntelliJ配置为委托给Gradle构建过程(see this),但我希望简单地将IntelliJ配置为使用APT来自己生成必要的类。
我为我的项目启用了APT,但仍未生成我的课程。
build.gradle(适用的代码段):
ext {
mapstructVersion = '1.2.0.Final'
}
plugins {
id 'net.ltgt.apt' version '0.15'
}
dependencies {
// MapStruct support
implementation group: 'org.mapstruct', name: 'mapstruct-jdk8', version: mapstructVersion
annotationProcessor group: 'org.mapstruct', name: 'mapstruct-processor', version: mapstructVersion
}
IntelliJ配置:
然而,当我执行./gradle clean
后跟Build-> Rebuild Project时,我的out / production / classes / generated文件夹为空。
在这个项目上启用APT需要做些什么吗? IntelliJ应该自动检测类路径中的mapstruct注释处理器吗?
答案 0 :(得分:6)
最后,它可以与Intellji 2018.1 CE一起正常工作。我们不需要任何apt插件。
这里是更新的gradle文件
plugins {
id 'java'
}
repositories {
mavenCentral()
mavenLocal()
}
sourceCompatibility = JavaVersion.VERSION_1_8
dependencies {
compile group: 'org.mapstruct', name: 'mapstruct-jdk8', version: '1.2.0.Final'
compileOnly 'org.mapstruct:mapstruct-processor:1.2.0.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.2.0.Final'
compileOnly ("org.projectlombok:lombok")
testCompile 'junit:junit:4.12'
}
请确保正确配置以下内容
启用注释处理器(首选项->构建执行部署->编译器->注释处理器)
MapStruct插件
Lombok插件
答案 1 :(得分:3)
我的build.gradle:
plugins {
id 'java'
id 'idea'
}
ext {
mapstructVersion = '1.2.0.Final'
}
dependencies {
// bean mapping
compile group: 'org.mapstruct', name: 'mapstruct-jdk8', version: mapstructVersion
compileOnly group: 'org.mapstruct', name: 'mapstruct-processor', version: mapstructVersion
annotationProcessor group: 'org.mapstruct', name: 'mapstruct-processor', version: mapstructVersion
}
刷新并尝试重建您的项目。
如果它不适合您...
手动启用Annotation Processors。
似乎是与annotationProcessor
配置有关的bug in IDEA。
在“ out / production / classes / generated”文件夹中签出构建输出。如果为空,请尝试重建您的项目。在重新构建之前,请手动删除构建输出文件夹的内容并修改您的mapper类,以确保应用更改。
$ rm -rf out build .gradle
通过在IntelliJ IDEA外部构建并运行项目来验证Gradle构建文件。
尝试将构建操作委派给Gradle。我不使用此选项,因为注释处理器仍然可以为我工作。
更新为IntelliJ IDEA 2018.3或更高版本。
答案 2 :(得分:1)
您需要使用net.ltgt.apt-idea
插件,它将自动配置IntelliJ IDEA。
plugins {
id 'net.ltgt.apt-idea' version '0.17'
}
dependencies {
compile('org.mapstruct:mapstruct-jdk8:1.2.0.Final')
apt('org.mapstruct:mapstruct-processor:1.2.0.Final')
}
请注意,在最新的gradle版本中不推荐使用apt
,而应该使用annotationProcessor
。但是,IntelliJ仍然不支持它。参见IDEA-187868。
答案 3 :(得分:0)
我正在使用Tomcat EE服务器运行Spring应用程序。 对我来说,以下工作有效:
在编辑配置> VM选项
中添加以下行-Xms1024m -Xmx1024m -XX:MaxPermSize=256m