使用 gradle antlr 插件在 Intellij 中的 generated-src/antlr 中复制 dagger2

duplicate dagger2 in generated-src/antlr in Intellij with gradle antlr plugin

我有一个使用 antlr 插件的 gradle 3.1 dagger2 antlr4 项目。我在 gradle idea 插件和 Intellij Annotation Processing 选项中配置了一个特定的生成源目录。如果我在 Intellij 2016.2.4 中构建它,dagger2 生成的源将在 build/generated-src/antlr/main 目录以及我配置的 src/main/generated 目录中复制。为什么要把非 Antlr 代码放到那个目录中?

已经有一段时间了,但我想我通过确保 antlr 源在 main/antlr/com.foo.bar.parsers 中来解决这个问题,就像包结构,然后在 build.gradle 中再次设置包:

generateGrammarSource {
    arguments += [
        "-package", "com.foo.bar.parsers"
    ]
    outputDirectory = file("$projectDir/gen") // same as Intellij ANTLR plugin
}