Intellij IDEA和SBT语法错误

14

我是Scala和SBT的新手。
我开始使用带有SBT的IDEA,并遇到了不明确的错误(在SBT文件中,表达式类型DslEntry必须符合Def.SettingsDefinition)。
enter image description here
这是一个非常简单的空测试项目,其中包含Jetty插件(示例来自插件网站)。

这是plugins.sbt源代码:

logLevel := Level.Warn

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

这个错误仅存在于IDEA图形用户界面中。如果我编译项目 - 一切正常,从控制台 - 一切正常。但是我不喜欢当某些东西不能正常工作时。

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

我下载了最新的IntelliJ IDEA EAP,并使用最新版本的Scala插件、SBT插件和其他插件 - 问题仍然存在。

有人能帮忙解决这个问题吗?
谢谢


看一下Idea的右侧,打开SBT选项卡,选择主项目并刷新它。 - Łukasz
我做了很多...很多次 =))) - Alexandr
4
可能是 Intellij sbt sbt-native-packager and enablePlugins error 的重复问题。 - Justin Kaeser
2个回答

17

试一试:

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)

你能给解决方案添加一个说明吗? - Marin
@Marin我对这个难题没有非常清晰的理解。但是我根据自己所知道的更新了答案。 - SexyNerd
@SexyNerd 不知何故,将 enablePlugins 分配给一个 val 实际上并没有启用插件。波浪线已经消失,但是没有启用插件。 - Ivan Balashov

1

我仍然在我的项目/plugins.sbt和project/assembly.sbt文件中看到错误。 - Andrew Swan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接