Gradle IntelliJ找不到ANTLR生成的源
出于某种原因,即使Gradle构建得很好,IntelliJ在构建时也会出错。我让ANTLR生成我的解析器代码,但IntelliJ找不到生成的代码。 我的身材。格雷德尔: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
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)}
部分。如果问题仍然存在,请提供一个样本项目。