当将SBT与IntelliJ IDEA一起使用时,项目常常会陷入一种糟糕的状态,即在终端中不发生编译器错误的情况下,本来应该发生的错误不会发生。
一个项目将sbt compile
在终端中没有问题,但是将保留在IntelliJ IDEA中,直到我删除.idea
目录并单击“从现有资源创建新项目”。
在IntelliJ中配置SBT项目以使用SBT Shell根本没有帮助。
首先,为什么会这样?哪些因素导致了该问题:
最后,如何避免这种破损?
答案 0 :(得分:0)
据我所知,Intellij IDEA创建了自己的内存结构来表示已解析文件的实际状态,直至可以启用从IDE中获得的所有有用功能(表示形式,引用,用法,文档,编译器错误,...)。
此模型不是sbt构建的输出。借助该插件,IDE可以基于sbt构建文件创建这种内存中表示形式,并且最近可以使用sbt引擎本身(您需要在首选项中启用它)。
仍然sbt不允许保留IDE可以使用的输出的内存表示形式,因此IDEA的代码“图片”有时会与实际的编译输出有所不同,这可能是由于语言和插件的某些高级功能所致(例如,宏通常会这样做)在IDEA数据结构中无法正确表示。
通常,当您更改构建文件中的某些内容时,IDEA会自动刷新构建状态或提示您执行构建状态(当聚焦于构建文件编辑器时)。这应该足以使构建与IDE“对齐”。
然而,在许多情况下,复杂的代码库会在IDE中永久显示错误错误。
正如我们所说的那样,我们正在为解决这种情况进行许多努力