sbt/Scala 是不是有类似于 Bundler/pip >= 或 ~= 的“兼容版本”?
Posted
技术标签:
【中文标题】sbt/Scala 是不是有类似于 Bundler/pip >= 或 ~= 的“兼容版本”?【英文标题】:Does sbt/Scala have a "compatible release" similar to Bundler/pip >= or ~=?sbt/Scala 是否有类似于 Bundler/pip >= 或 ~= 的“兼容版本”? 【发布时间】:2021-12-27 17:19:36 【问题描述】:我习惯使用~=
或>=
来让包管理器升级到最新的兼容版本。
sbt 或 Scala 有类似的东西吗?我在他们的文档上找不到它:https://www.scala-sbt.org/1.x/docs/Library-Management.html
捆绑器等效项:https://bundler.io/gemfile.html 等效点数:https://pip.pypa.io/en/stable/reference/requirements-file-format/#example
感谢您的宝贵时间????
【问题讨论】:
AFAIK 有办法,但从来没有人这样做过,我们不喜欢随机中断的项目。 @LuisMiguelMejíaSuárez 抱歉,有错字吗?:“有办法”或“没有办法” 有一种方法:scala-sbt.org/1.x/docs/Library-Dependencies.html#Ivy+revisions - 但同样,我还没有看到任何项目 (开源或私有) 这样做,恕我直言,它太脆弱了。我们有诸如 scala-steward 和 mergify 之类的东西来帮助减轻升级依赖项的负担。 感谢您提及 scala-steward 和合并。这是你指的mergify吗?:mergify.com 是的,这就是我的意思。另外,我无法回答,因为它只是一个链接和意见。您可以为自己的问题提供一个很好的答案,详细解释该语法的工作原理。 【参考方案1】:我只是想总结一下cmets中的对话:
有办法做到这一点:https://ant.apache.org/ivy/history/2.3.0/ivyfile/dependency.html#revision
语法是:
Examples:
[1.0,2.0] matches all versions greater or equal to 1.0 and lower or equal to 2.0
[1.0,2.0[ matches all versions greater or equal to 1.0 and lower than 2.0
]1.0,2.0] matches all versions greater than 1.0 and lower or equal to 2.0
]1.0,2.0[ matches all versions greater than 1.0 and lower than 2.0
[1.0,) matches all versions greater or equal to 1.0
]1.0,) matches all versions greater than 1.0
(,2.0] matches all versions lower or equal to 2.0
(,2.0[ matches all versions lower than 2.0
不建议这样做,还有其他工具可以帮助解决依赖关系。
即使我对 Scala/Java 世界进行了极其简短的探索,但许多依赖项往往会被破坏,并且向后兼容性似乎比我使用 Python 和 Ruby 的经验更重要。甚至文档似乎也会导致依赖关系破裂。为什么在 Scala/Java 世界中通常不使用这些版本范围是有道理的。也很可能是因为我对 Scala/Java 缺乏经验。
希望对你有帮助?
【讨论】:
以上是关于sbt/Scala 是不是有类似于 Bundler/pip >= 或 ~= 的“兼容版本”?的主要内容,如果未能解决你的问题,请参考以下文章
在多模块 Java/scala 项目中有一个通用的 webapp?