Java 使用Gradle时,如何将生成的源集成到IntelliJ IDEA中?

Java 使用Gradle时,如何将生成的源集成到IntelliJ IDEA中?,java,intellij-idea,gradle,javacc,Java,Intellij Idea,Gradle,Javacc,我目前正在使用JavaCC(带有来自的javaccgradle插件)生成一些源代码。项目的其余部分确实依赖于该代码。 如果我将项目导入IDEA或清理项目,那么我将得到错误,因为找不到类。然而,构建项目确实可行 是否可以修改gradle文件,以便IntelliJ(可能还有其他编辑器)在分析代码之前知道如何生成这些源代码 生成的代码保存在src/gen/java/中,生成代码的位置通过以下方式显示: sourceSets { gen { java {

我目前正在使用JavaCC(带有来自的javaccgradle插件)生成一些源代码。项目的其余部分确实依赖于该代码。 如果我将项目导入IDEA或清理项目,那么我将得到错误,因为找不到类。然而,构建项目确实可行

是否可以修改gradle文件,以便IntelliJ(可能还有其他编辑器)在分析代码之前知道如何生成这些源代码

生成的代码保存在src/gen/java/中,生成代码的位置通过以下方式显示:

sourceSets {
    gen {
        java {
            srcDir 'src/gen/java'
        }
    }
}
由于IntelliJ正在构建该项目,我认为最简单的方法是:

compileJava.dependsOn <generateSourcesTask>
compileJava.dependsOn

但是将其添加到gradle文件中没有效果(可能是因为JavaCC插件已经在这样做了)。

您是否尝试将生成的源目录添加到main?像这样:

sourceSets {
    main {
        java {
            srcDirs = ["src/main/java", "src/gen/java"]
        }
    } 
}
它适用于我:

compileJava.dependsOn('generateSourcesTask')

您是否必须为JavaCC插件运行一个任务才能完成它的工作?如果是这样的话,您不能将其添加为compileJava的依赖项吗?通过分析,您是指运行检查吗?@fge我指的是打开java文件进行检查时的自动检查example@MrWigglesJavaCC插件本身就可以做到这一点(这就是我在最后一段中的意思)啊,我明白了,所以它插入了正常的gradle生命周期?如何导入IntelliJ?如果是使用
gradle idea
你可以使它依赖于正确的目标。在这种情况下,添加一个新的源代码集(生成)有什么意义?为了让intellij idea看到它,但将代码调整到IDE是一个糟糕的解决方案。它不应该是“智能的”吗