Scala sbt:sbt中的多个依赖项

21

我是Scala的新用户,按照创建Scala sbt项目的方式进行操作。

https://www.youtube.com/watch?v=Ok7gYD1VbNw


添加后

libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"

在编辑完 build.sbt 并刷新项目后,我收到了以下消息:

[warn] 有多个具有相同组织者/名称但不同版本的依赖项。为避免冲突,请选择一个版本:

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

并且在 build.sbt 中,单词 'scalatest' 是红色的,这意味着它是未解决的依赖项。

我应该在项目设置中更改一些内容,比如 Scala SDK 吗?

最好的问候!


只要是警告,它就不应该成为一个问题。检查是否有“错误”。如果有任何错误-在这里打印它们。 - vvg
如果您使用IntellJ Idea,那么在build.sbt中任何东西都可以变成红色,但它仍然会编译。IDE的解析器有时无法解析某些内容(包括Scala代码),因此通常只要它能编译,您就可以忽略红色的内容。其他IDE可能也是如此。 - Archeg
@Archeg 如果我的配置正确,我可以运行测试文件,对吧?目前为止,我甚至无法在IDE中右键单击文件时进行“运行”。 - Eason Caizhen Liu
你只是发布了一个警告,这可能与不可工作状态无关。当你尝试运行它时,它会显示什么? - Archeg
2个回答

25

你可以把这些依赖项添加进去:

libraryDependencies ++= Seq(
  "org.scala-lang" % "scala-reflect" % "2.11.7",
  "org.scala-lang.modules" % "scala-xml_2.11" % "1.0.4"
)

它强制编译器选择具体版本的库。这对我解决了问题。


2
我想知道为什么Idea不能自动识别build.sbt中的scalaVersion := "2.11.7" - Ivan Balashov
1
这通常是有效的,但我在使用org.scala-lang.modules:scala-xml的版本1.0.41.0.5时遇到了问题。我已经清除了Ivy缓存,但没有取得积极的结果。 - ZbyszekKr

8

我通过排除scalatest依赖项来解决了这个问题。

libraryDependencies ++= Seq(
  "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
    exclude("org.scala-lang", "scala-reflect")
    exclude("org.scala-lang.modules", "scala-xml_2.11")
)

1
我更喜欢这个,而不是Bartłomiej Szałach的回答中所述的内容。 - ivanorone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接