Sbt 如何强制依赖项的特定版本?
依赖项Sbt 如何强制依赖项的特定版本?,sbt,Sbt,依赖项bar依赖于foo1.2.3,但该版本的foo有一个bug,我需要使用版本1.2.2 我可以用force()来实现这一点 以下机构不推荐使用该方法: 强制修订(不推荐) 注意:强制可能会造成逻辑不一致,因此不再推荐使用 这是否意味着SBT有一种不同于force()的更好的方法来使用依赖项的特定版本?如果是,什么 或者我可以从文档中推断出整个问题是我不建议遇到的问题吗?您可以使用: 无论如何,你都不能避免“逻辑不一致”。如果强制使用某个版本,则必须手动处理与其他库的兼容性,这是没有出路的 从
bar
依赖于foo
1.2.3,但该版本的foo
有一个bug,我需要使用版本1.2.2
我可以用force()
来实现这一点
以下机构不推荐使用该方法:
强制修订(不推荐)
注意:强制可能会造成逻辑不一致,因此不再推荐使用
这是否意味着SBT有一种不同于force()
的更好的方法来使用依赖项的特定版本?如果是,什么
或者我可以从文档中推断出整个问题是我不建议遇到的问题吗?您可以使用:
无论如何,你都不能避免“逻辑不一致”。如果强制使用某个版本,则必须手动处理与其他库的兼容性,这是没有出路的
从文件中:
重写版本
对于二进制兼容冲突,sbt提供依赖项重写。
它们使用dependencyOverrides设置进行配置,该设置是
模块的集合。例如,以下依赖项定义
冲突,因为spark使用log4j 1.2.16,scalaxb使用log4j
1.2.17:
libraryDependencies ++= Seq(
"org.spark-project" %% "spark-core" % "0.5.1",
"org.scalaxb" %% "scalaxb" % "1.0.0" )
默认冲突管理器选择log4j的最新版本,1.2.17:
libraryDependencies ++= Seq(
"org.spark-project" %% "spark-core" % "0.5.1",
"org.scalaxb" %% "scalaxb" % "1.0.0" )
show update
[info] compile:
[info] log4j:log4j:1.2.17: ... ...
[info] (EVICTED) log4j:log4j:1.2.16 ...
更改版本
选中后,添加替代:
dependencyOverrides += "log4j" % "log4j" % "1.2.16"
请不要忘记结尾的这句简短的评论。
注意:这是一项仅限于常春藤的功能,不会包含在已发布的pom.xml中。
尝试库依赖项:=Set()
dependencyOverrides++=Set(…foo…
如果这对任何人都不起作用,请尝试添加dependencyOverrides+=“…foo…””就像这样:@EugenePlatonov,没关系。它将与多个覆盖混淆;我只需要一个逃生舱。
dependencyOverrides += "log4j" % "log4j" % "1.2.16"