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?)

KajMagnus
quelle
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.

Eugene Yokota
quelle
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.

Sandeep Purohit
quelle
-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
Ayvango
quelle
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