这是关于版本控制和工作流程的问题。SBT如何在依赖关系中选择最高版本?
我有多个项目
了projectA/build.sbt
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.0.0",
"com.example" % "util" % "1.0.0"
)
项目B/build.sbt
version := "1.0.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "1.0.0"
)
UTIL/build.sbt
version := "1.0.0"
------------------------ DEVELOPMENT ------------------ ------
我在util
中增加了一个方法。
UTIL/build.sbt
version := "2.0.0"
这个附加功能是伟大的,所以我用它来优化projectB
。
项目B/build.sbt
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "2.0.0"
)
------------------------ DEVELOPMENT ----- -------------------
我想projectA
要更快,所以我拉projectB
。
了projectA/build.sbt
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.1.0",
"com.example" % "util" % "1.0.0"
)
------------------------ 问题 ----- -------------------
现在,projectA
需要1.0.0
util
版本,但project B
需要util
版本2.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
结束?
对我来说,如果我可以让一个项目使用最大版本,从它自己的依赖关系和(递归)依赖关系的依赖关系中,但不会高于这个值,那将是理想的。
哦,太棒了!并感谢您的链接。我习惯了Maven,我相信它采用了最接近的依赖关系指定的版本。这种行为好得多。 –