Mapstruct Annotation Processor 似乎无法在 Intellij 中使用 Gradle 项目
Mapstruct Annotation Processor does not seem to work in Intellij with Gradle project
我正在尝试使用 Intellij 2017 Ultimate build/run Spring 使用 MapStruct 的启动应用程序。这是一个 Gradle 项目。我的问题是 IntelliJ 似乎没有 运行 MapStruct Annotation Processor。我意识到我可以配置 IntelliJ 委托给 Gradle 构建过程(),但我希望简单地配置 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
然后执行构建 -> 重建项目时,我的 out/production/classes/generated 文件夹是空的。
我还需要做些什么才能在这个项目上启用 APT 吗? IntelliJ 是否应该自动检测类路径中的 mapstruct 注释处理器?
您需要改用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')
}
请注意 apt
在最新的 gradle 版本中已被弃用,应该使用 annotationProcessor
代替。但是,IntelliJ 仍然不支持它。参见 IDEA-187868。
终于在 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 插件
我的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。
好像是 bug in IDEA 相关的 annotationProcessor
配置。
检查“out/production/classes/generated”文件夹中的构建输出。如果它是空的,请尝试重建您的项目。通过在重建之前手动删除构建输出文件夹的内容并修改映射器 class 来确保应用更改。
$ rm -rf out build .gradle
通过在 IntelliJ IDEA 之外构建和运行项目来验证您的Gradle构建文件。
尝试将构建操作委托给 Gradle。我不使用这个选项,因为注解处理器对我有用。
更新至 IntelliJ IDEA 2018.3 或更高版本。
我是 运行 一个使用 Tomcat EE 服务器的 Spring 应用程序。
对我来说,做以下工作:
在 编辑配置 > VM 选项中添加以下行
-Xms1024m -Xmx1024m -XX:MaxPermSize=256m
如果您使用的是 kotlin,我们将无法再在类路径中发现注解处理器。您必须将如下所示的依赖项放入 build.gradle.kts
kapt {
dependencies {
kapt("org.mapstruct:mapstruct-processor:1.4.2.Final")
}
}
我正在尝试使用 Intellij 2017 Ultimate build/run Spring 使用 MapStruct 的启动应用程序。这是一个 Gradle 项目。我的问题是 IntelliJ 似乎没有 运行 MapStruct Annotation Processor。我意识到我可以配置 IntelliJ 委托给 Gradle 构建过程(
我已经为我的项目启用了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
然后执行构建 -> 重建项目时,我的 out/production/classes/generated 文件夹是空的。
我还需要做些什么才能在这个项目上启用 APT 吗? IntelliJ 是否应该自动检测类路径中的 mapstruct 注释处理器?
您需要改用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')
}
请注意 apt
在最新的 gradle 版本中已被弃用,应该使用 annotationProcessor
代替。但是,IntelliJ 仍然不支持它。参见 IDEA-187868。
终于在 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 插件
我的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。
好像是 bug in IDEA 相关的annotationProcessor
配置。检查“out/production/classes/generated”文件夹中的构建输出。如果它是空的,请尝试重建您的项目。通过在重建之前手动删除构建输出文件夹的内容并修改映射器 class 来确保应用更改。
$ rm -rf out build .gradle
通过在 IntelliJ IDEA 之外构建和运行项目来验证您的Gradle构建文件。
尝试将构建操作委托给 Gradle。我不使用这个选项,因为注解处理器对我有用。
更新至 IntelliJ IDEA 2018.3 或更高版本。
我是 运行 一个使用 Tomcat EE 服务器的 Spring 应用程序。 对我来说,做以下工作:
在 编辑配置 > VM 选项中添加以下行
-Xms1024m -Xmx1024m -XX:MaxPermSize=256m
如果您使用的是 kotlin,我们将无法再在类路径中发现注解处理器。您必须将如下所示的依赖项放入 build.gradle.kts
kapt {
dependencies {
kapt("org.mapstruct:mapstruct-processor:1.4.2.Final")
}
}