我怎样才能最好地解决sbt中“可能不兼容的依赖版本”问题

时间:2013-01-02 13:33:48

标签: scala sbt scala-2.9

我的项目发出以下警告:

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

我有以下依赖项:

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

我正在试图弄清楚如何摆脱org.scala-lang 2.9.1依赖,但它并不像我想象的那么容易。我错过了什么伎俩?

1 个答案:

答案 0 :(得分:9)

首先,您需要通过逐个禁用它来找出导致此问题的依赖项。然后你可以使用针对2.9.2编译的那个库的版本,或者如果没有这样的版本,你可以排除依赖。

确定导致问题的依赖关系的一个很好的工具是sbt-dependency-graph

要排除传递依赖关系,可以使用exclude方法:

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

请参阅“排除传递依赖项”下的here