【问题标题】:Is there an sbt plugin to get dependencies like in Gemfile?是否有一个 sbt 插件来获取 Gemfile 中的依赖项?
【发布时间】:2017-12-30 02:15:36
【问题描述】:

使用 rvm、dart's pub 等依赖项管理工具,您可以指定没有特定版本的依赖项。我将获得每个依赖项的最新版本并生成基线工件。此工件包含每个依赖项及其在您运行命令时的最新版本。

使用 sbt,我发现自己通过查看 maven repo 手动执行此步骤。他们的 sbt 插件是否已经这样做了?

以 dart's pub 为例,您可以这样做。

pubspec.yaml

...
dependencies:
  args: '>=0.10.0 < 0.11.0'
  analyzer: '>=0.13.0 <0.14.0'
  barback: '>=0.11.1 <0.14.0'
...

pubspec.lock

packages:
  analyzer:
    description: analyzer
    source: hosted
    version: "0.13.6"
  args:
    description: args
    source: hosted
    version: "0.10.0+2"
  barback:
    description: barback
    source: hosted
    version: "0.12.0"
...

【问题讨论】:

    标签: sbt dependency-management


    【解决方案1】:

    您可以指定latest 作为修订号。例如:

    libraryDependencies += "org.apache.derby" % "derby" % "latest.release"
    

    有关更多详细信息,请查看 ivy 文档:

    http://ant.apache.org/ivy/history/2.3.0/ivyfile/dependency.html#revision

    【讨论】:

    • +1 它看起来像是在遮阳篷上,因为它不会锁定版本。
    【解决方案2】:

    基于@darko-cerdic 的回答

    您可以指定latest 作为修订号。例如:

    libraryDependencies += "org.apache.derby" % "derby" % "latest.release"
    

    有关更多详细信息,请查看 ivy 文档:

    http://ant.apache.org/ivy/history/2.3.0/ivyfile/dependency.html#revision

    如果需要,您可以手动指定dependencyOverrides 以强制使用特定的库版本:

    dependencyOverrides ++= Seq( "org.apache.derby" % "derby" % "1.0.0")
    

    请注意,在 SBT 1.+ 中,dependencyOverrides 被指定为 Seq,而在之前的版本中,它被指定为 Set。

    使用 sbt-lock 插件,您可以锁定所有依赖项的当前版本,以便您的 CI 系统可以使用一组稳定的依赖项。它根据当前已解析的libraryDependencies 集生成一组dependencyOverrides。这为您提供类似于 Gemfile.lock 的行为。

    https://github.com/tkawachi/sbt-lock

    【讨论】:

      猜你喜欢
      • 2014-05-27
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2013-05-22
      • 2014-12-27
      • 2015-07-05
      相关资源
      最近更新 更多