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.
出于某种原因,即使 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.