SBT如何在依赖项中选择最高版本?
这是一个关于版本控制和工作流的问题 我有多个项目 projectA/build.sbtSBT如何在依赖项中选择最高版本?,sbt,Sbt,这是一个关于版本控制和工作流的问题 我有多个项目 projectA/build.sbt version := "1.0.0" libraryDependencies ++= Seq( "com.example" % "projectB" % "1.0.0", "com.example" % "util" % "1.0.0" ) version := "1.0.0" libraryDependencies ++= Seq( "com.example" % "util" % "1.0.
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.0.0",
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
version := "2.0.0"
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "2.0.0"
)
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.1.0",
"com.example" % "util" % "1.0.0"
)
projectB/build.sbt
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.0.0",
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
version := "2.0.0"
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "2.0.0"
)
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.1.0",
"com.example" % "util" % "1.0.0"
)
util/build.sbt
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.0.0",
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
version := "2.0.0"
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "2.0.0"
)
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.1.0",
"com.example" % "util" % "1.0.0"
)
------------------------发展------------------------
我在util
中添加了一个方法
util/build.sbt
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.0.0",
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
version := "2.0.0"
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "2.0.0"
)
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.1.0",
"com.example" % "util" % "1.0.0"
)
这个新增的功能很棒,所以我用它来优化projectB
projectB/build.sbt
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.0.0",
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
version := "2.0.0"
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "2.0.0"
)
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.1.0",
"com.example" % "util" % "1.0.0"
)
------------------------发展------------------------
我希望projectA
更快,所以我加入了projectB
projectA/build.sbt
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.0.0",
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "1.0.0"
)
version := "1.0.0"
version := "2.0.0"
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "2.0.0"
)
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.1.0",
"com.example" % "util" % "1.0.0"
)
------------------------问题------------------------
现在,projectA
需要util
version1.0.0
,但是projectb
需要util
version2.0.0
我可以更新projectA
以使用新版本的util
。问题是我需要更新的项目和依赖项的数量可能非常大,并且依赖项链可能非常长。(想象一下projectZ
,它依赖于projectA
和util
)
是否有一种方法可以使我的项目依赖项具有最低版本
例如,如果projectA
需要util
版本1.0.0
和projectB
需要util
版本2.0.0
,projectA
将使用2.0.0
版本
如果是这样,如果有可用的util
版本3.0.0
,在这种情况下会发生什么?projectA
会使用2.0.0
,还是3.0.0
对我来说,如果我能让一个项目从它自己的依赖项和(递归地)它的依赖项中使用最伟大的版本,那将是非常理想的,但不能超过这个版本
对我来说,如果我能有一个最大限度地利用资源的项目,那将是理想的
版本,从它自己的依赖项和(递归地)它的
依赖项的依赖项,但不高于此值
从Sbt文档中:
冲突管理器决定在依赖项解决时要做什么
引入同一库的不同版本。默认情况下
选择最新版本
这已经是默认行为
同样的文档解释了如何强制版本、指定最低版本等。哦,太棒了!谢谢你的链接。我习惯了Maven,我相信它采用了最接近的依赖项指定的版本。这种行为要好得多。