Коли я компілюю код 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 є маса проблем із деякими видами проектів (особливо з тими, що активно використовують макроси).