Как «перезапустить с -deprecation для деталей» в sbt?

168

Когда я компилирую код Scala, запустив sbt compile, SBT говорит:

$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...

Как я могу это сделать? (Изнутри SBT?)

KajMagnus
источник
2
Аналогичный вопрос (который включает в себя ответ на ваш вопрос) на stackoverflow.com/questions/9415962/…
Кристиан Домагала

Ответы:

217

Sbt Shell

Находясь в оболочке 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.

Евгений Йокота
источник
2
@retronym: in Globalвместо того, чтобы in ThisBuildодинаково хорошо работать с подпроектами, но почему последний предпочтительнее? или это даже?
Эрик Каплун
23
scalacOptions := Seq("-unchecked", "-deprecation")

Добавьте этот параметр в свой build.sbt и, если у вас есть многомодульный проект, добавьте его в настройки каждого проекта.

Сандип Пурохит
источник
-2

С течением времени появляются новые решения. Итак, теперь вы можете перезапустить компилятор 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
ayvango
источник
1
Добавление Ensime просто для получения -deprecation- ужасная идея. Ensime для поддержки аннотации на лету в редакторах. Помимо этого, у самого Ensime есть множество проблем с некоторыми типами проектов (особенно те, которые интенсивно используют макросы).
Зак
Плагин ensime - небольшой компаньон для толстого языкового сервера. Вы можете использовать это отдельно. Или может просто скопировать некоторые функции из него.
Айванго