Dagger2 + gradle + intellij:未找到生成的类并将其视为编译错误/不会自动完成

acc*_*der 3 java intellij-idea annotation-processing dagger-2

我试图让 intellij 使用各种其他插件与我的功能性 gradle build sans 一起玩。我使用的各种 插件破坏了我需要使用的另一个插件的支持(它在默认位置寻找生成的源以及其他问题)。我已经在这个问题上工作了一段时间并且取得了轻微的成功,但总是有警告。许多插件与测试目录中的 apt 不兼容,等等。

启用注释处理器并将输出目录设置为 /build/classes/main 和 /build/classes/test 不会产生结果,尽管这是 gradle 插件似乎放置通过包含生成的 .java 和 .class 文件的地方dagger2 编译器。

通过创造性地调整模块配置中生成的源集参数,我可以让所有东西都玩得很好,但这永远不会存在。即如果您关闭应用程序,您必须重新配置选项。

任何帮助,将不胜感激。

小智 6

我通过以下步骤解决了问题:1)修改compileJava任务以指定目标源位置

compileJava {
    options.compilerArgs+= [
            "-s", project.projectDir.absolutePath + '/src/main/generated'
    ]
}
Run Code Online (Sandbox Code Playgroud)

2)告诉IntelliJ Idea这些文件是来源

idea {
    module {
        // generatedSourceDir does  not work for some reason
        sourceDirs  += file(project.projectDir.absolutePath + '/src/main/generated')
    }
}
Run Code Online (Sandbox Code Playgroud)

PS Idea插件应该通过应用:

apply plugin: 'idea'
Run Code Online (Sandbox Code Playgroud)