这是关于版本控制和工作流程的问题。
我有多个项目
了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"
------------------------ 发展 --------------- ---------
我在util
中添加了一个方法。
UTIL / build.sbt
version := "2.0.0"
这个附加功能很棒,所以我用它来优化projectB
。
项目B / build.sbt
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "util" % "2.0.0"
)
------------------------ 发展 --------------- ---------
我希望projectA
更快,所以我拉入projectB
。
了projectA / build.sbt
version := "1.1.0"
libraryDependencies ++= Seq(
"com.example" % "projectB" % "1.1.0",
"com.example" % "util" % "1.0.0"
)
------------------------ 问题 --------------- ---------
现在,projectA
需要util
版本1.0.0
,但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
版本。
如果是这样的话,如果3.0.0
的版本util
可用,会发生什么情况?使用projectA
或2.0.0
最终会3.0.0
结束吗?
对我来说,如果我能让一个项目使用最好的版本,从它自己的依赖项和(递归地)它的依赖项依赖项,那将是理想的,但不高于它。
答案 0 :(得分:3)
对我来说,如果我能让一个项目使用最好的项目,那将是理想的 版本,从它自己的依赖项和(递归)它的 依赖者的依赖性,但不高于此。
来自Sbt文档http://www.scala-sbt.org/release/docs/Detailed-Topics/Library-Management.html#conflict-management:
冲突管理器决定在依赖项解析时要执行的操作 带来了同一个库的不同版本。默认情况下 选择了最新版本。
这已经是默认行为。
相同的文档解释了如何强制版本,指定最低版本等。