Синтаксическая ошибка Intellij IDEA и SBT
Я новичок в scala и SBT
Я начал использовать IDEA с SBT и столкнулся с нечеткой ошибкой (Тип выражения DslEntry должен соответствовать Def.SettingsDefinition в SBT файле)
Это очень простой пустой тестовый проект с плагином для прикроватного (пример взято с сайта плагина)
здесь источник plugins.sbt:
logLevel := Level.Warn
addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "2.1.0")
Эта ошибка присутствует только в графическом интерфейсе IDEA. Если я скомпилирую проект - все отлично. с консоли - все отлично.
Но мне не нравится, когда что-то не работает должным образом
Я попытался загрузить последнюю версию SBT и установить путь к ней в глобальных свойствах IDEA - проблема сохраняется.
Я скачал последний intellij IDEA EAP с последней версией плагина scala, плагина sbt и других плагинов - проблема не устранена.
Может ли кто-нибудь помочь решить эту проблему?
Спасибо
Ответы
Ответ 1
Попробуйте следующее:
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)
Ответ 2
Это проблема с плагином IntelliJ Scala и будет исправлена в следующей версии: https://youtrack.jetbrains.com/issue/SCL-8413