Wie kann ich "-deprecation for details" in sbt erneut ausführen?


168

Wenn ich Scala-Code kompiliere sbt compile, sagt SBT durch Ausführen :

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

Wie mache ich das? (Aus SBT heraus?)


2
Ähnliche Frage (die die Antwort auf Ihre Frage enthält) bei stackoverflow.com/questions/9415962/…
— Kristian Domagala

Antworten:


217

sbt shell

Während in der sbt-Shell (wenn Sie Ihre nicht ändern möchten build.sbt):

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

Durch in ThisBuild, setwendet die Einstellungen für alle Teilprojekte, wie gut.

Befehlszeile

Sie können den obigen Befehl auch als einzelnen Befehl in der Befehlszeile ausführen.

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

Der Trick besteht darin, ;(Semikolons) zu verwenden, um Befehle zu trennen, und '( ;Häkchen ), um alle getrennten Befehle als ein einziges Argument für sbt einzuschließen.


2
@retronym: in Globalanstatt in ThisBuildauch mit Teilprojekten gleich gut zu funktionieren - aber warum wird letzteres bevorzugt? oder ist es sogar?
— Erik Kaplun

23
scalacOptions := Seq("-unchecked", "-deprecation")

Fügen Sie diese Einstellung Ihrer build.sbt hinzu, und wenn Sie ein Projekt mit mehreren Modulen haben, fügen Sie sie den Einstellungen jedes Projekts hinzu.


-2

Mit der Zeit entstehen neue Lösungen. Jetzt können Sie den Scala-Compiler erneut ausführen, ohne die gesamte Projektwiederherstellung durchzuführen.

Sie müssen das ensime-sbt-Plugin installieren :

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

Danach können Sie die ensimeCompileOnlyAufgabe verwenden, um eine einzelne Datei zu kompilieren. SBT ermöglicht die Konfiguration der Einstellungen pro Aufgabe, sodass Sie diese nur für diese Aufgaben ändern können:

set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala

1
Das Hinzufügen von Ensime -deprecationist eine schreckliche Idee. Ensime dient zur Unterstützung von On-the-Fly-Annotationen in Editoren. Außerdem hat Ensime selbst eine Reihe von Problemen mit einigen Arten von Projekten (insbesondere solchen, die Makros häufig verwenden).
— Zac

Das ensime Plugin ist ein kleiner Begleiter des Fat Language Servers. Sie können es separat verwenden. Oder Sie können einfach einige Funktionen daraus kopieren.
— Ayvango
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.