简而言之: 我无法配置IntelliJ使其在与gradle相同的目录中生成Java文件。
我有一个小项目,使用了immutables注释处理器。在gradle命令行构建中,它按预期工作,但我无法让IntelliJ将生成的文件输出到相同的目录。
完整的项目可在GitLab上获得。
Gradle配置:
我使用以下Gradle插件:
- gradle-idea插件,用于处理Idea配置
- gradle-apt-plugin,提供apt配置,并处理与注释处理相关的编译类路径和Idea配置(如果也应用了Idea插件)
构建脚本的相关部分(完整清单链接):
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
命令时,一切都是按预期的进行的:
![enter image description here](https://istack.dev59.com/Es3n0.webp)
- 源文件
DataEncoding.java
被处理并生成了一个名为DataEncodingEnabled.java
的Java文件,它位于 /build/generated/source/apt/main
目录下,且在预期的包com.tmtron.immutables.data
中- 生成的文件也被编译成了 .class 文件
![enter image description here](https://istack.dev59.com/bSSEx.webp)
然后我执行./gradlew clean
以确保先前的文件已被清除,然后在IntelliJ中单击Build
- Build Project
.
注释处理器正在执行,但问题是生成的Java文件最终出现在错误的位置:
![enter image description here](https://istack.dev59.com/2sc7u.webp)
它在这个位置: /build/generated/source/apt/main/build/generated/source/apt/main/com.tmtron.immutables.data
粗体部分是多余的。
我做错了什么,如何正确设置,使得IntelliJ和Gradle在同一个目录中生成文件?
备注:
- 我当然已经尝试过只将IntelliJ注释配置中的“生产源目录”留空,但这并不起作用:然后它自动使用“generated”,我也遇到了错误路径问题。
- IntelliJ版本为2016.3.4。