假设我创建了从版本foo
到1.0.0
的库1.0.1
的二进制兼容更新。图书馆foo
通过Maven发布。
我是否可以使用此次要版本更新来同时追踪foo
的依赖项的次要版本?例如,版本1.0.0使用scalaVersion := "2.10.1"
。我可以在foo 1.0.1中将其更改为scalaVersion := "2.10.3"
,还是会导致麻烦?
假设我在另一个项目中使用foo
作为
"mygroup" %% "foo" % "1.0.+"
答案 0 :(得分:6)
涉及多个注意事项,但通常是的,如果它们是二进制兼容的,您可以更改依赖项的版本。 Scala团队的目标是将2.10.x版本与二进制兼容。您可以针对Scala 2.10.1进行编译,并在运行时使用2.10.3。
只要您使用两者中存在的方法和类型,您通常可以对Scala库执行相反的操作。不过,大多数图书馆并不关心这个方向。关于二进制兼容性的其他警告:
LinkageError
的那些)。但通常不建议使用“1.0。+”等动态修订版。它们使复制构建更加困难并影响分辨率。
答案 1 :(得分:2)
通常,现代软件遵循semantic versioning
给定版本号MAJOR.MINOR.PATCH,增加:
MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes.
因此"2.10.3"
与任何"2.10.x"
版本兼容。
通常我们不应该关心.PATCH
部分,除非修复了影响我们代码的错误。我猜是这样的。