2017-06-02 1 views
0

Das Projekt, an dem ich arbeite, verwendet Scala und SBT. Ich muss die Verwendung einer veralteten Methode in unserem Code einführen und anstatt mir nur einen Fehler zu geben, gibt mir sbt einen Kompilierfehler, wenn ich den Code kompiliere.Warum ist eine Verwarnungswarnung, die einen Kompilierungsfehler in SBT verursacht

Gibt es irgendwo eine Flagge oder Einstellung, die dies ermöglicht, die ich ändern kann?

method getDB in class Mongo is deprecated: see corresponding Javadoc 
for more information. 
[error] lazy val db: com.mongodb.DB = mongoClient.getDB("foo") 
[error]           ^
[error] one error found 
[error] (web/compile:compileIncremental) Compilation failed 
[error] Total time: 9 s, completed Jun 2, 2017 7:20:53 AM 

Danke.

Antwort

0

Scalac hat eine Flagge Xfatal-warnings, die Warnungen in Fehler verwandelt. Siehe Is there a way in sbt to convert compiler warnings to errors so the build fails? und https://github.com/scala/bug/issues/8410

Eine Abhilfe ist die Definition einer Eigenschaft ist veraltet, das die Methode aufruft und macht seine Begleiter Objekt diese Eigenschaft implementieren:

scala> @deprecated("","") def foo = "I am deprecated" 
foo: String 

scala> @deprecated("","") trait Foo { def safeFoo = foo }; object Foo extends Foo 
defined trait Foo 
defined object Foo 

scala> foo 
<console>:13: warning: method foo is deprecated: 
     foo 
    ^
res0: String = I am deprecated 

scala> Foo.safeFoo 
res1: String = I am deprecated 
+0

Diese Flagge eigentlich in meinem build.sbt gesetzt war, aber ich habe es entfernt und ich bekomme immer noch den Kompilierfehler. – Kohl

+0

Können Sie Ihre Frage mit dem Fehler bearbeiten, den Sie erhalten? –

+1

@Kohl Haben Sie die sbt-Konfiguration nach der Änderung neu geladen (sbt neu starten oder reload an der sbt-Eingabeaufforderung eingeben)? – jan0sch

Verwandte Themen