Scala sbt:sbt 中的多个依赖项
Posted
技术标签:
【中文标题】Scala sbt:sbt 中的多个依赖项【英文标题】:Scala sbt: Multiple dependencies in sbt 【发布时间】:2016-03-31 19:45:54 【问题描述】:我是Scala的新用户,按照创建scala sbt项目的方式。
https://www.youtube.com/watch?v=Ok7gYD1VbNw
添加后
libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
到build.sbt,并刷新项目,我得到了这个消息。
[警告] 具有相同组织/名称但版本不同的多个依赖项。为避免冲突,请选择一个版本:
[警告] * org.scala-lang:scala-reflect:(2.11.2, 2.11.7)
[警告] * org.scala-lang.modules:scala-xml_2.11:(1.0.2, 1.0.4)
并且在 build.sbt 中,单词“scalatest”是红色的,表示它是一个未解决的依赖项。
我应该更改项目设置中的某些内容吗,例如 scala sdk?
最好的问候!
【问题讨论】:
一旦警告它应该不是问题。检查error
s。如果有,请在此处打印。
如果你使用 IntellJ Idea,build.sbt
中的任何东西都可以是红色的,但它仍然会编译。 IDE 的解析器有时不能解析东西(scala 代码也是如此),所以通常只要它编译,你就可以忽略红色的东西。其他 IDE 可能也是如此。
@Archeg 如果我的配置是正确的,我可以运行测试文件,对吧?目前,我什至在 IDE 中右键单击文件时无法“运行”。
您刚刚发布了一个警告,这可能与不可工作状态无关。当你尝试运行它时它会说什么?
【参考方案1】:
您可以考虑添加这些依赖项:
libraryDependencies ++= Seq(
"org.scala-lang" % "scala-reflect" % "2.11.7",
"org.scala-lang.modules" % "scala-xml_2.11" % "1.0.4"
)
它强制编译器选择具体版本的库。它为我解决了问题。
【讨论】:
我想知道为什么 Idea 无法通过scalaVersion := "2.11.7"
in build.sbt
自行解决
这在大多数情况下都有效,但是我遇到了1.0.4
和1.0.5
的org.scala-lang.modules:scala-xml
版本的问题。我已经从常春藤缓存中清除它们,但没有积极的结果。【参考方案2】:
我能够通过从 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")
)
【讨论】:
比起 Bartłomiej Szałach 的回答,我更喜欢这个。以上是关于Scala sbt:sbt 中的多个依赖项的主要内容,如果未能解决你的问题,请参考以下文章
Play 2.0 / SBT:从 Build.scala 中的某些/所有模块中排除某些传递依赖项
使用 sbt-assembly 来自单个项目的具有不同外部依赖项的多个可执行 jar 文件