Pau*_*per 21 dependencies ivy sbt
依赖性bar取决于foo1.2.3,但该版本foo有一个错误,我需要使用版本1.2.2.
我可以这样做force().
libraryDependencies += "foo" %% "foo" % "1.2.2" force()
Run Code Online (Sandbox Code Playgroud)
文档不建议使用该方法:
强制修改(不推荐)
注意:强制可能会产生逻辑不一致,因此不再推荐使用它.
这是否意味着SBT force()与使用特定版本的依赖关系有不同的更好的方法?如果是这样,什么?
或者我是否从文档中推断出整个问题是我建议不要有的问题?
Gio*_*tti 38
你可以使用dependencyOverrides:
dependencyOverrides += "foo" %% "foo" % "1.2.2"
Run Code Online (Sandbox Code Playgroud)
无论如何,你并没有避免"逻辑上的不一致".如果你强制使用一个版本,你必须手动处理与其他库的兼容性,没有办法解决这个问题.
从文档:
覆盖版本
对于二进制兼容冲突,sbt提供依赖性覆盖.它们使用dependencyOverrides设置进行配置,该设置是一组ModuleID.例如,以下依赖项定义冲突,因为spark使用log4j 1.2.16而scalaxb使用log4j 1.2.17:
Run Code Online (Sandbox Code Playgroud)libraryDependencies ++= Seq( "org.spark-project" %% "spark-core" % "0.5.1", "org.scalaxb" %% "scalaxb" % "1.0.0" )默认冲突管理器选择log4j的最新版本1.2.17:
Run Code Online (Sandbox Code Playgroud)show update [info] compile: [info] log4j:log4j:1.2.17: ... ... [info] (EVICTED) log4j:log4j:1.2.16 ...要更改所选版本,请添加覆盖:
Run Code Online (Sandbox Code Playgroud)dependencyOverrides += "log4j" % "log4j" % "1.2.16"
| 归档时间: |
|
| 查看次数: |
10734 次 |
| 最近记录: |