2013-01-02 12 views
13

Mein Projekt am besten beheben gibt die folgende Warnung:Wie kann ich „potenziell inkompatible Versionen von Abhängigkeiten“ in sbt

[warn] Potentially incompatible versions of dependencies of {file:/some/path/}default-5bae4a: 
[warn] org.scala-lang: 2.9.2, 2.9.1 

ich die folgenden Abhängigkeiten haben:

libraryDependencies ++= Seq(
    "io.spray"   % "spray-can"  % "1.0-M3", 
    "io.spray"   % "spray-routing" % "1.0-M3", 
    "io.spray"   % "spray-testkit" % "1.0-M3", 
    "io.spray"   %% "spray-json" % "1.2.3" cross CrossVersion.full, 
    "com.typesafe.akka" % "akka-actor" % "2.0.3", 
    "org.mongodb"   %% "casbah"   % "2.4.1", 
    "com.novus"   %% "salat"   % "1.9.1", 
    "org.specs2"   %% "specs2"  % "1.12.2" % "test", 
    "org.mockito"   % "mockito-all"  % "1.9.0" % "test" 
) 

Ich versuche, um herauszufinden, wie und wie man die Abhängigkeit von org.scala-lang 2.9.1 beseitigt, aber es ist nicht so einfach, wie ich gedacht habe. Welchen Trick vermisse ich?

+0

Warum deaktivieren Sie Ihre Abhängigkeiten nicht einzeln, um zu sehen, welches das Problem verursacht? –

+0

Und wenn ich weiß, welcher es ist? Wie schließe ich eine bestimmte Version von scala-lang aus? – iwein

Antwort

9

Zuerst müssen Sie herausfinden, welche Abhängigkeit dieses Problem verursacht, indem Sie sie einzeln deaktivieren. Dann können Sie entweder eine Version dieser Bibliothek verwenden, die mit 2.9.2 kompiliert wurde, oder, falls es keine solche Version gibt, können Sie die Abhängigkeit ausschließen.

Ein großartiges Werkzeug, um herauszufinden, welche Abhängigkeit das Problem verursacht, ist sbt-dependency-graph.

Um eine transitive Abhängigkeit auszuschließen, können Sie die Methode ausschließen können:

libraryDependencies += 
    "com.novus" %% "salat" % "1.9.1" exclude("org.scala-lang", "scalap"), 

Siehe here unter "Ausschließen transitive Abhängigkeiten".

+0

abhängige Grafik sagte mir 'org.scala-lang: scalap: 2.9.1 (geräumt von: 2.9.2)' könnte das der Schuldige sein? – iwein

+0

lustige Sache ist, dass ich diesen Ausschluss gegen alle meine Deps ausprobiert habe und es nicht funktioniert ... kann ich nicht alle Artefakte unter org.scala-lang mit Version 2.9.1 global ausschließen? – iwein

+0

Verstanden. Endlich. Die Antwort wurde aktualisiert, um den Fix für den Kontext wiederzugeben. – iwein

Verwandte Themen