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?)
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?)
Odpowiedzi:
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
, set
stosuje ustawienia również do wszystkich podprojektów.
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.
in Global
zamiast tego in ThisBuild
działa równie dobrze z podprojektami - ale dlaczego ten drugi jest preferowany? czy to nawet?
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.
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ć ensimeCompileOnly
zadania 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
-deprecation
to 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).