IntelliJ 找不到 ANTLR 生成的源

ANTLR generated sources not found by IntelliJ

出于某种原因,即使 Gradle 构建良好,构建时 IntelliJ 错误。我有 ANTLR 生成我的解析器代码,但 IntelliJ 找不到生成的代码。 我的 build.gradle:

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 甚至可以通过自动导入识别包,但编译会破坏它。 我试过了IntelliJ IDEA Gradle project not recognizing/locating Antlr generated sources。弄了包名,重载Gradle,失效caches/restarting,整整两秒。 IntelliJ 还将该文件夹识别为“生成的源根目录”。

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

无需额外定义生成的源集。我建议咨询 antlr plugin documentation.