這是關於版本控制和工作流程的問題。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,我相信它採用了最接近的依賴關係指定的版本。這種行爲好得多。 –