Jak „ponownie uruchomić z -deprecation po szczegóły” w sbt?

168

Kiedy skompilować kod Scala, uruchamiając sbt compile, SBT mówi:

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

W jaki sposób mogę to zrobić? (Z SBT?)

KajMagnus
źródło
2
Podobne pytanie (zawierające odpowiedź na Twoje pytanie) na stackoverflow.com/questions/9415962/ ...
Kristian Domagala

Odpowiedzi:

217

sbt shell

Będąc w powłoce sbt (jeśli nie chcesz zmieniać build.sbt):

$ sbt
> set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation")
> compile
> exit

W związku z in ThisBuild, setstosuje ustawienia również do wszystkich podprojektów.

Wiersz poleceń

Możesz również uruchomić powyższe polecenie jako pojedyncze polecenie w wierszu poleceń.

sbt '; set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation") ; compile' 

Sztuczka polega na użyciu ;(średników) do oddzielania poleceń i '(znaczników) do dołączania wszystkich ;oddzielonych poleceń jako pojedynczego argumentu do sbt.

Eugene Yokota
źródło
2
@retronym: in Globalzamiast tego in ThisBuilddziała równie dobrze z podprojektami - ale dlaczego ten drugi jest preferowany? czy to nawet?
Erik Kaplun
23
scalacOptions := Seq("-unchecked", "-deprecation")

Dodaj to ustawienie do pliku build.sbt, a jeśli masz projekt wielomodułowy, dodaj je do ustawień każdego projektu.

Sandeep Purohit
źródło
-2

W miarę upływu czasu pojawiają się nowe rozwiązania. Więc teraz możesz ponownie uruchomić kompilator scala bez konieczności ponownego kompilowania projektu.

Musisz zainstalować wtyczkę ensime-sbt :

addSbtPlugin("org.ensime" % "sbt-ensime" % "1.0.0")

Następnie możesz użyć ensimeCompileOnlyzadania do skompilowania pojedynczego pliku. SBT zezwala na konfigurację ustawień zadań, więc możesz zmienić tylko te zadania:

set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala
ayvango
źródło
1
Dodanie Ensime tylko po to, by dostać, -deprecationto okropny pomysł. Ensime służy do obsługi adnotacji w locie w edytorach. Poza tym sam Ensime ma wiele problemów z niektórymi rodzajami projektów (zwłaszcza tymi, które intensywnie używają makr).
Zac
Wtyczka ensime jest małym dodatkiem do grubego serwera językowego. Możesz go używać osobno. Albo po prostu skopiować z niego jakąś funkcjonalność.
ayvango