Cra*_*tis 13 java intellij-idea gradle kotlin antlr4
我在一个简单的Kotlin/Gradle项目中使用Antlr,而我的Gradle构建生成Antlr源,它们无法导入到项目中.
如您所见(左侧),正在生成类(Lexer/Parser等).我还将此generated-src/antlr/main目录配置为源根目录.我看到的大多数问题都将此列为解决方案,但我已经完成了.
多次重建(在IDEA和CLI上)并且遵循所有常见的"无效缓存和重新启动"问题后,问题仍然存在.
此外,导入问题在CLI上的Gradle构建中列出,因此它似乎与IDEA无关.
我在这里错过了什么?
这是build.gradle我最初创建项目时IDEA生成的文件,以及IDEA用于项目/工作区同步的文件.
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.2.50'
}
group 'com.craigotis'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
apply plugin: 'antlr'
dependencies {
antlr "org.antlr:antlr4:4.5"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.2.0'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
Run Code Online (Sandbox Code Playgroud)
它不应该找到已编译的类而不是源吗?你在目标目录中看到antlr生成的类了吗?
试试这个:首先在不引用或使用任何 ANTLR 生成的类的情况下构建项目,只有在构建成功后,然后添加引用它们的代码。
(换句话说,我认为发生的情况是,您的 ANTLR 源代码是在引用它们的代码之后编译的。它们永远没有机会编译,因为之前构建失败)
另外,如果确实是这种情况,您也可以通过分成两个工件来解决它,并确保 ANTLR 工件是在使用它的代码的工件之前构建的
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |