【问题标题】:Why does sbt give multiple dependencies warning with Akka and ScalaTest dependencies?为什么 sbt 对 Akka 和 ScalaTest 依赖项给出多个依赖项警告?
【发布时间】:2016-04-06 20:14:02
【问题描述】:

我刚刚将 ScalaTest 添加到 build.sbt,所以它现在看起来如下:

name := "appname"

version := "1.0"

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-actor" % "2.4.1",
  "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
)

之后我收到警告消息:

SBT project import
         [warn] Multiple dependencies with the same organization/name but different versions. To avoid conflict, pick one version:
         [warn]  * org.scala-lang:scala-reflect:(2.11.2, 2.11.7)
         [warn]  * org.scala-lang.modules:scala-xml_2.11:(1.0.2, 1.0.4)

我也尝试将有关 ScalaTest 的行更改为:

"org.scalatest" %% "scalatest" % "2.2.4" % "test"

但警告仍然与上面相同。

我怎么能处理这个问题,因为我的项目中没有任何地方写过“reflect”或“xml”。我正在使用 Akka 和 ScalaTest 的最新版本以及 Scala 2.11 版。

【问题讨论】:

  • 请始终使用%% 交叉构建Scala 依赖项(这样当scalaVersion 和依赖项的版本不匹配时,您不会冒Scala 版本不匹配的风险)。

标签: scala sbt akka scalatest


【解决方案1】:

解决方案可能是明确添加 SBT 建议的版本之一。当libraryDependencies 为:

libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-actor" % "2.4.1",
  "org.scalatest" %% "scalatest" % "2.2.4" % "test",
  "org.scala-lang" % "scala-reflect" % "2.11.7",
  "org.scala-lang.modules" %% "scala-xml" % "1.0.4"
)

【讨论】:

  • @Jacek Laskowski 为什么你没有用 scala-reflect 把这个百分比改成两个?
  • 一个不错的收获!原因是该库属于给定版本的 Scala(并且它会引入重复项)。这就是为什么有 sbt 习惯用法来检查scalaVersion 并做出适当的反应,即是否包括scala-reflect - 请咨询Mixing with managed dependencies
【解决方案2】:

在您的特定情况下,这与 ISSUE 1933 有关,您现在可以忽略它。您还可以显式指定所需的依赖版本,以消除警告。

【讨论】:

    【解决方案3】:

    问题已通过sbt 0.13.12 修复

    【讨论】:

      猜你喜欢
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 2018-03-20
      • 2019-04-02
      • 2019-08-13
      • 1970-01-01
      • 2016-06-19
      相关资源
      最近更新 更多