Когда я компилирую код Scala, запустив sbt compile
, SBT говорит:
$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
Как я могу это сделать? (Изнутри SBT?)
Когда я компилирую код Scala, запустив sbt compile
, SBT говорит:
$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
Как я могу это сделать? (Изнутри SBT?)
Ответы:
Находясь в оболочке sbt (если вы не хотите менять свою build.sbt
):
$ sbt
> set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation")
> compile
> exit
Благодаря in ThisBuild
, set
применяет настройки для всех суб-проектов, а также.
Вы также можете запустить вышеприведенную команду в виде одной команды.
sbt '; set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation") ; compile'
Хитрость заключается в использовании ;
(точки с запятой) для разделения команд и '
(галочки) для включения всех ;
разделенных команд в качестве одного аргумента для sbt.
in Global
вместо того, чтобы in ThisBuild
одинаково хорошо работать с подпроектами, но почему последний предпочтительнее? или это даже?
scalacOptions := Seq("-unchecked", "-deprecation")
Добавьте этот параметр в свой build.sbt и, если у вас есть многомодульный проект, добавьте его в настройки каждого проекта.
С течением времени появляются новые решения. Итак, теперь вы можете перезапустить компилятор scala без выдачи полной перестройки проекта.
Вам необходимо установить плагин ensime-sbt :
addSbtPlugin("org.ensime" % "sbt-ensime" % "1.0.0")
После этого вы можете использовать ensimeCompileOnly
задачу для компиляции одного файла. SBT разрешает настройку параметров для каждой задачи, поэтому вы можете изменить только для этих задач:
set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala
-deprecation
- ужасная идея. Ensime для поддержки аннотации на лету в редакторах. Помимо этого, у самого Ensime есть множество проблем с некоторыми типами проектов (особенно те, которые интенсивно используют макросы).