Gradle IntelliJ找不到ANTLR生成的源

Gradle IntelliJ找不到ANTLR生成的源,gradle,intellij-idea,antlr,Gradle,Intellij Idea,Antlr,出于某种原因,即使Gradle构建得很好,IntelliJ在构建时也会出错。我让ANTLR生成我的解析器代码,但IntelliJ找不到生成的代码。 我的身材。格雷德尔: apply plugin: 'antlr' apply plugin: 'idea' def generatedDirectory = 'src/main/generated' dependencies { antlr "org.antlr:antlr4:4.7.2" implementa

出于某种原因,即使Gradle构建得很好,IntelliJ在构建时也会出错。我让ANTLR生成我的解析器代码,但IntelliJ找不到生成的代码。 我的身材。格雷德尔:

apply plugin: 'antlr'
apply plugin: 'idea'

def generatedDirectory = 'src/main/generated'

dependencies {
    antlr "org.antlr:antlr4:4.7.2"
    implementation "org.antlr:antlr4-runtime:4.7.2"
    implementation fileTree(generatedDirectory)
}

generateGrammarSource {
    maxHeapSize = "64m"
    arguments += ['-package', 'software.bigbade.fractioncalculator.generated']
    outputDirectory = new File(generatedDirectory + "/software/bigbade/fractioncalculator/generated")
}

compileJava.dependsOn generateGrammarSource

sourceSets {
    generated {
        java {
            srcDir generatedDirectory
        }
        compileClasspath += sourceSets.main.runtimeClasspath
    }
}

compileJava.source = sourceSets.generated.java + sourceSets.main.java

idea {
    module {
        generatedSourceDirs += file(generatedDirectory)
    }
}

clean {
    delete generatedDirectory
}
我的运行配置:

IntelliJ甚至可以通过自动导入识别包,但编译会破坏它。 我试过了。在摆弄包名、重新加载Gradle和使缓存失效/重新启动之后,它工作了整整两秒钟。
IntelliJ还将文件夹识别为“生成的源根目录”。

您希望生成的源在哪里?当您只添加
antlr
Gradle插件时,它会自动将生成的源代码添加到构建输出目录中,IDE会正确检测它们:


不需要另外定义生成的源集。我建议您参考。

尝试从build.gradle文件中删除
apply插件:'idea'
idea{module{generatedSourceDirs+=file(generatedDirectory)}
部分。如果问题仍然存在,请提供一个样本项目。