相关疑难解决方法(0)

IntelliJ和Gradle中的注释处理器

tl; dr:我无法配置IntelliJ来生成与gradle相同的目录中的java文件

我有一个使用immutables注释处理器的小项目.它在gradle命令行构建中按预期工作,但我无法让IntelliJ将生成的文件输出到同一目录.

整个项目可在GitLab上获得

Gradle配置:
我使用以下gradle插件:

  • gradle-idea插件,用于处理构思配置
  • gradle-apt-plugin,提供apt配置并处理与注释处理相关的编译类路径和构思配置(如果还应用了构思插件)

build-script的相关部分(链接到完整列表):

apply plugin: 'java'
apply plugin: "net.ltgt.apt"
apply plugin: 'idea'

dependencies {
    def immutablesVersion = '2.3.9'
    compileOnly "org.immutables:value:$immutablesVersion:annotations"
    compileOnly "org.immutables:encode:$immutablesVersion"
    apt "org.immutables:value:$immutablesVersion"
}
Run Code Online (Sandbox Code Playgroud)

当我开始时./gradlew build一切都如预期: 在此输入图像描述

  1. DataEncoding.java处理源文件,生成的java文件DataEncodingEnabled.java最终进入
  2. /build/generated/source/apt/main 根据预期的方案 com.tmtron.immutables.data
  3. 并且生成的文件也被编译为.class文件

在IntelliJ中,我按照gradle-apt-plugin文档的建议激活注释处理: 在此输入图像描述

然后我执行./gradlew clean以确保先前的文件已经消失然后我单击Build- Build Project在IntelliJ中.
执行注释处理器,但问题是生成的java文件最终位于错误的位置: 在此输入图像描述

它位于:/ build/generated/source/apt/main/build/generated/source/apt/main /com.tmtron.immutables.data
,粗体部分是多余的.

我做错了什么以及如何正确设置,以便IntelliJ和gradle在同一目录中生成文件?

笔记:

  • 我当然已经尝试将IntelliJ注释配置中的"生成源目录"留空,但是它不起作用:然后它会自动使用"生成"而我最终也会得到错误的路径.
  • IntelliJ版本2016.3.4

intellij-idea gradle annotation-processing

17
推荐指数
3
解决办法
1万
查看次数