java - Mapstruct Annotation Processor 似乎不适用于带有 Gradle 项目的 Intellij

标签 java gradle intellij-idea mapstruct

我正在尝试使用 Intellij 2017 Ultimate 构建/运行使用 MapStruct 的 Spring Boot 应用程序。这是一个 Gradle 项目。我的问题是 IntelliJ 似乎没有运行 MapStruct Annotation Processor。我意识到我可以配置 IntelliJ 以委托(delegate)给 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 配置:

enter image description here

但是,当我执行 ./gradle clean 后跟 Build->Rebuild Project 时,我的 out/production/classes/generated 文件夹是空的。

为了在这个项目上启用 APT,我还需要做些什么吗? IntelliJ 是否应该自动检测类路径中的 mapstruct 注释处理器?

最佳答案

它终于在 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'
}

请确保以下内容配置正确

  1. 启用注解处理器(Preference->Build Execute Deployment ->Compiler->Annotations Processors)

  2. MapStruct 插件

  3. Lombok 插件

关于java - Mapstruct Annotation Processor 似乎不适用于带有 Gradle 项目的 Intellij,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49540962/

相关文章:

android - 当min sdk为5.0以下时,启用multidex创建singledex,而当min sdk为5.0以上时,则启用multidex。

intellij-idea - intellij idea运行配置备份

java - 如何向顶点添加鼠标监听器 - jgraphx

java - JNI无法释放内存

java - 如何在不同的gradle任务之间共享参数

java - Intellij 模板生成器语法

intellij-idea - WebSphere Liberty 配置文件和 Intellij : JMX administration should be enable

java - 用Java发送数据报包

java - 索引 0 超出范围

java - Gradle:作为文件读取有效,但不能作为资源读取