Як "повторно запустити з -визначення деталей" у sbt?


168

Коли я компілюю код Scala, запустивши sbt compile, SBT каже:

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

Як це зробити? (Зсередини SBT?)


2
Подібне запитання (що включає відповідь на ваше запитання) на stackoverflow.com/questions/9415962/…
Крістіан Домагала

Відповіді:


217

оболонка 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.


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

1
Додавання Ensime просто для отримання -deprecation- жахлива ідея. Ensime призначений для підтримки анотацій на ходу в редакторах. Окрім цього, у самої Ensime є маса проблем із деякими видами проектів (особливо з тими, що активно використовують макроси).
Зак

тим часом плагін є невеликим супутником сервера жирових мов. Ви можете використовувати його окремо. Або може просто скопіювати з нього якусь функціональність.
айванго
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.