【问题标题】: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-stewardmergify 之类的东西来帮助减轻升级依赖项的负担。
  • 感谢您提及 scala-steward 和合并。这是你指的mergify吗?:mergify.com
  • 是的,这就是我的意思。另外,我无法回答,因为它只是一个链接和意见。您可以为自己的问题提供一个很好的答案,详细解释该语法的工作原理。

标签: scala sbt dependency-management


【解决方案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 缺乏经验。

希望对你有帮助?

【讨论】:

    猜你喜欢
    • 2020-09-18
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 2014-09-22
    • 2013-04-20
    • 2011-10-31
    相关资源
    最近更新 更多