Intellij IDEA和SBT语法错误

时间:2015-12-21 21:23:28

标签: scala intellij-idea sbt

我是斯卡拉和SBT的新手 我开始使用IDEA和SBT并且面临不明确的错误(表达式类型DslEntry必须符合SBT文件中的Def.SettingsDefinition)
enter image description here
这是一个非常简单的带有jetty插件的空测试项目(例子来自插件站点)

这是plugins.sbt来源:

logLevel := Level.Warn

addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "2.1.0")

此错误仅出现在IDEA GUI中。如果我编译项目 - 一切都很好。从控制台 - 一切都很好。 但是当某些东西不能正常工作时我不喜欢

我尝试下载最新版本的SBT并在全局IDEA属性中设置路径 - 问题仍然存在。

我使用最新版本的scala插件,sbt插件和其他插件下载了最后一个intellij IDEA EAP - 问题仍然存在。

任何人都可以帮忙解决这个问题吗?
谢谢

2 个答案:

答案 0 :(得分:16)

试试这个:

lazy val root = (project in file(".")).
  enablePlugins(JettyPlugin).
  settings(
    name := "test",
    scalaVersion := "2.11.7",
    version := "1.0"
  )

更新: 以下是我所知道的:

错误来自intellij的sbt插件https://github.com/JetBrains/intellij-sbt/blob/master/idea-plugin/src/main/scala/org/jetbrains/sbt/language/SbtAnnotator.scala#L41

(project in file(".")). enablePlugins(JettyPlugin)的返回类型为Project。它可以被sbt插件接受。

但是,如果您使用独立enablePlugins(JettyPlugin),则返回类型不同,并且它变为DslEntry,这使得sbt插件不满意。另一种解决方法是简单地使用返回类型enablePlugins。例如:

val foo = enablePlugins(JettyPlugin)

答案 1 :(得分:0)

这是IntelliJ Scala插件的问题,将在即将推出的版本中修复:https://youtrack.jetbrains.com/issue/SCL-8413