当前位置: 首页 > 知识库问答 >
问题:

如何强制Scala使用不同的库版本?

盖锐进
2023-03-14
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" % "test"

将以上内容更改为

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

解决了问题。但是,与其将Scala-XML2.11版本1.0.5排除在scalatest之外,我想强制scala编译器使用Scala-XML2.11版本1.0.5而不是版本1.0.4。(我在https://mvnrepository.com上研究了这些版本。)因此,我尝试将scalaversion:=“2.11.8”替换为

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

然而,这导致

[警告]*org.scala-lang:scala-library:(2.11.8,2.10.4)

[警告]*org.scala-lang:scala-reflect:(2.11.8,2.10.4)

[警告][失败]com.artima.supersafe#supersafe2.10.4;1.1.0!supersafe2.10.4.jar(src):(0ms)

[warn]====本地:已尝试

scalaVersion := "2.11.8"

libraryDependencies ++= Seq(
  "org.scala-lang" % "scala-reflect" % scalaVersion.value,
  "org.scala-lang.modules" %% "scala-xml" % "1.0.5"
)

// ScalaTest
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" % "test"
scalaVersion := "2.11.8"

libraryDependencies ++= Seq(
  "org.scala-lang" % "scala-reflect" % scalaVersion.value,
  "org.scala-lang.modules" %% "scala-xml_2.11" % "1.0.5"
)

// ScalaTest
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" % "test"
[info]
Resolving org.scala-sbt#run;0.13.8 ... [info] Resolving
org.scala-sbt#task-system;0.13.8 ... [info] Resolving
org.scala-sbt#tasks;0.13.8 ... [info] Resolving
org.scala-sbt#tracking;0.13.8 ... [info] Resolving
org.scala-sbt#cache;0.13.8 ... [info] Resolving
org.scala-sbt#testing;0.13.8 ... [info] Resolving
org.scala-sbt#test-agent;0.13.8 ... [info] Resolving
org.scala-sbt#test-interface;1.0 ... [info] Resolving
org.scala-sbt#main-settings;0.13.8 ... [info] Resolving
org.scala-sbt#apply-macro;0.13.8 ... [info] Resolving
org.scala-sbt#command;0.13.8 ... [info] Resolving
org.scala-sbt#logic;0.13.8 ... [info] Resolving
org.scala-sbt#precompiled-2_8_2;0.13.8 ... [info] Resolving
org.scala-sbt#precompiled-2_9_2;0.13.8 ... [info] Resolving
org.scala-sbt#precompiled-2_9_3;0.13.8 ... [trace] Stack trace
suppressed: run 'last *:update' for the full output. [trace] Stack
trace suppressed: run 'last :ssExtractDependencies' for the full
output. [error] (:update) sbt.ResolveException: unresolved
dependency: org.scala-lang.modules#scala-xml_2.11_2.11;1.0.5: not
found [error] (*:ssExtractDependencies) sbt.ResolveException:
unresolved dependency:
org.scala-lang.modules#scala-xml_2.11_2.11;1.0.5: not found [error]
Total time: 4 s, completed 01.10.2016 17:46:55
scalaVersion := "2.11.8"

libraryDependencies ++= Seq(
  "org.scala-lang" % "scala-reflect" % scalaVersion.value,
  "org.scala-lang.modules" %% "scala-xml" % "1.0.5"
)

// ScalaTest
libraryDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "3.0.0" % "test"
  exclude("org.scala-lang", "scala-reflect")
  exclude("org.scala-lang.modules", "scala-xml")
)

[警告]具有相同组织/名称但版本不同的多个依赖项。为避免冲突,选择一个版本:[warn]*org.scala-lang.modules:scala-xml_2.11:(1.0.5,1.0.4)

name := "MyProject"
version := "0.1.0"
scalaVersion := "2.11.8"

libraryDependencies ++= Seq(
  "org.scala-lang" % "scala-reflect" % scalaVersion.value,
  "org.scala-lang.modules" %% "scala-xml" % "1.0.5"
)

// ScalaTest
//libraryDependencies += "org.scalactic" %% "scalactic" % "3.0.0"
//libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" % "test"
libraryDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "3.0.0" % "test"
  exclude("org.scala-lang", "scala-reflect")
  exclude("org.scala-lang.modules", "scala-xml_2.11")
)

共有1个答案

施海
2023-03-14

排除特定传递依赖关系的方法如下:

>

  • 运行sbt evicted要找出哪一个项目依赖项正在拉入过时的库,我们假设有问题的库是:com.typesafe.slick

    添加以下排除项(括号很重要):

  •  类似资料:
    • 问题内容: 如何在网络驱动程序中设置Firefox版本?我只想使用其他版本的Firefox。 就像其他版本19、20、21 … 请提供一个通用解决方案,该解决方案也对其他浏览器有所帮助。 问题答案: 您必须在系统上安装所有版本。然后,您可以使用System属性来定义Firefox的路径。请注意,由于路径是通过System属性设置的,因此您将无法在同一Java进程中运行两个不同的Firefox。 此

    • 问题内容: 我已经安装了Java6和7,并使用eclipse编写了一个简单的jdbc应用程序。我在lib文件夹中同时有sqljdbc4.jar和sqljdbc.jar。我收到此消息… 2013年12月18日9:29:51 com.microsoft.sqlserver.jdbc.SQLServerConnection 严重:该驱动程序不支持Java Runtime Environment(JRE)

    • 问题内容: 我正在处理的代码可以在Windows XP和Mac OS X上完美运行。在CentOS(以及Fedora和Ubuntu)上进行测试时,它无法正常工作。搜索网使我得出结论,那就是引起问题的那一版本。因此,现在我需要Zend Lucene 的版本才能正常工作。 我已经下载libiconv的,并配置它,,然后没有任何错误。似乎已成功安装,因为执行说版本是。虽然简单仍然给出了版本。 然后,我使

    • 我通过以下步骤针对libc,libc abi,编译器-rt构建clang: > < li> 为了下载(和更新)llvm和子项目,我使用了以下脚本: 首先,我使用 gcc 针对 libgcc 和 libstdc 构建 llvm、clang、libunwind,并将它们安装在 / 中。在以下所有步骤中,除了最后一个,我都使用这个新鲜的叮当。 (我几乎可以肯定,这里没有一个步骤是多余的。) 在最后一步,

    • 问题内容: 这是Linux编程书的引文: 假设这两个和是available.Then链接器必须选择的图书馆之一,而不是other.The链接搜索每个目录(第那些指定的选项,然后将这些在标准目录)。当链接器找到了一个包含目录无论是或,链接器将停止搜索目录。如果目录中仅存在两个变体之一,则链接器将选择该变体。否则,除非另有明确指示,否则链接程序将选择共享库版本。您可以使用该选项来请求静态归档。例如,即