tl;dr:我无法将IntelliJ配置为在与gradle相同的目录中生成java文件
我有一个使用不变注释处理器的小项目。它在gradle命令行构建中可以正常工作,但我无法让IntelliJ将生成的文件输出到同一个目录。
整个项目可在GitLab上使用。
Gradle配置
我使用了折叠的gradle插件:
构建脚本(链接到完整的列表)的相关部分:
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"
}当我启动./gradlew build时,一切都如期而至:

DataEncoding.java被处理,生成的java文件DataEncodingEnabled.java在/build/generated/source/apt/main下的com.tmtron.immutables.data在IntelliJ中,我按照级-apt-插件文档的建议激活注释处理:

然后执行./gradlew clean以确保前几个文件都没有了,然后单击IntelliJ中的Build - Build Project。
注释处理器被执行,但问题是生成的java文件最终位于错误的位置:

它在: /build/generated/source/apt/main/build/generated/source/apt/main/com.tmtron.immutables.data中
大胆的部分是多余的。
我做错了什么,如何正确地设置它,以便IntelliJ和gradle在同一个目录中生成文件?
备注:
发布于 2017-02-25 13:15:19
更新2.2019
更新5.2018
我所知道的最简单的方法是使用apt概念插件
只需激活build.gradle文件中的插件:
plugins {
id 'java'
id 'net.ltgt.apt-idea' version "0.15"
}然后将注释处理器添加到annotationProcessor配置中:
final DAGGER_VER = '2.16'
dependencies {
implementation "com.google.dagger:dagger:${DAGGER_VER}"
annotationProcessor"com.google.dagger:dagger-compiler:${DAGGER_VER}"
}基于GitHub:ex.dagger的测试项目
(使用IntelliJ 2018.1.4,Gradle 4.7)
原语答案
使用父-dir有一个简单的解决方法,在IntelliJ 2016.3.4中可以很好地工作。
../main../test现在,gradle和IntelliJ将生成相同目录的代码。
固定在GitLab项目V0.0.2中
https://stackoverflow.com/questions/42441844
复制相似问题