【问题标题】:How I can list all sbt dependencies?如何列出所有 sbt 依赖项?
【发布时间】:2016-01-04 00:16:21
【问题描述】:

我需要列出所有 sbt 依赖项以检查是否已经存在 debian 包(I also notice that there is a DEB package 但似乎没有打包外部依赖项)。

目前我通过以下步骤列出了 sbt 依赖项:

  1. Install sbt manually

  2. 我创建了一个简单的脚本来提取 ~/.ivi2 目录中的所有 jar 文件(不包括 sbt jar)。这里是执行结果:

    Group;Artifact;Artifact+Version
    org.scala-lang;jline;jline-2.10.5
    org.scala-lang;scala-compiler;scala-compiler-2.10.5
    org.scala-lang;scala-library;scala-library-2.10.5
    org.scala-lang;scala-reflect;scala-reflect-2.10.5
    com.jcraft;jsch;jsch-0.1.46
    org.scalamacros;quasiquotes_2.10;quasiquotes_2.10-2.0.1
    jline;jline;jline-2.11
    com.thoughtworks.paranamer;paranamer;paranamer-2.6
    org.json4s;json4s-ast_2.10;json4s-ast_2.10-3.2.10
    org.json4s;json4s-core_2.10;json4s-core_2.10-3.2.10
    org.scala-lang.modules;scala-pickling_2.10;scala-pickling_2.10-0.10.0
    org.scala-tools.sbinary;sbinary_2.10;sbinary_2.10-0.4.2
    org.fusesource.jansi;jansi;jansi-1.4
    org.spire-math;json4s-support_2.10;json4s-support_2.10-0.6.0
    org.spire-math;jawn-parser_2.10;jawn-parser_2.10-0.6.0
    

你认为列出所有 sbt 依赖项的正确方法是什么?

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    有一个很好的sbt pluginhttps://github.com/jrudolph/sbt-dependency-graph

    只需添加到~/.sbt/0.13/plugins/plugins.sbt:

    addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.0")
    

    调用sbt dependencyTree,您可以获得一个“ascii 图”,例如:

    ...
    [info]   | +-org.apache.lucene:lucene-spatial:4.10.2
    [info]   | | +-com.spatial4j:spatial4j:0.4.1
    [info]   | | +-org.apache.lucene:lucene-core:4.10.2
    [info]   | | +-org.apache.lucene:lucene-queries:4.10.2
    [info]   | |   +-org.apache.lucene:lucene-core:4.10.2
    [info]   | |
    [info]   | +-org.apache.lucene:lucene-suggest:4.10.2
    [info]   |   +-org.apache.lucene:lucene-analyzers-common:4.10.2
    [info]   |   | +-org.apache.lucene:lucene-core:4.10.2
    [info]   |   |
    [info]   |   +-org.apache.lucene:lucene-core:4.10.2
    [info]   |   +-org.apache.lucene:lucene-misc:4.10.2
    [info]   |   | +-org.apache.lucene:lucene-core:4.10.2
    [info]   |   |
    [info]   |   +-org.apache.lucene:lucene-queries:4.10.2
    [info]   |     +-org.apache.lucene:lucene-core:4.10.2
    ...
    

    【讨论】:

    • 感谢您的回复,但我只需要将 sbt 依赖项列为构建工具,而不是作为特定项目。所以我需要列出外部库 sbt 需要什么。你知道我如何列出所有 sbt(作为构建工具)依赖项吗?
    • 你试过git clone git@github.com:sbt/sbt.git && cd sbt然后git checkout 0.13.9sbt dependencyTree吗?
    • 是的,我试过了,我有以下错误:[info] Set current project to sbtRoot (in build file:/tmp/sbt/)[error] Not a valid command: dependencyTree[error] Not a valid project ID: dependencyTree[error] Expected ':' (if selecting a configuration)[error] Not a valid key: dependencyTree (similar: dependencyOverrides, dependency-overrides, sbt-dependency)[error] dependencyTree[error] ^
    • 您必须先按照答案中的说明添加sbt-dependency-graph
    • >> addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.2")
    【解决方案2】:

    如果不需要sbt-dependency-graph 提供的依赖层次结构,以下可能有用:

    sbt 'show dependencyClasspathFiles'
    

    【讨论】:

    • 不错!到目前为止我见过的最简单的答案!
    【解决方案3】:

    只是在这里添加如何安装sbt-dependency-graph,我认为这与问题相关。


    重要提示:

    答案只是与sbt-dependency-graph相关的部分。您可能会找到完整的答案(sbt+scala+homebrew+plugin)here


    为了使用 Snyk CLI 测试 Scala 项目,您需要安装 Sbt 依赖图插件。

    为 sbt 0.13 安装 Sbt 依赖图插件 先决条件

    确保您已安装 Scala。

    确保你已经安装了 Sbt 并运行了 sbt。

    注意:以下步骤会将 Sbt 依赖插件安装为全局插件。

    1. 首先通过键入以下内容导航到正确的目录 命令:cd ~/.sbt

    2. 这将带你到 Sbt 目录。从那里你需要 导航到 0.13 目录。输入ls 命令将显示是否 目录中存在 0.13 和/或 1.0

    3. 键入:cd 0.13 导航到 0.13,然后创建一个名为 输入插件:mkdir plugins

    4. 键入:cd plugins 导航到新目录,然后继续 通过键入以下内容创建一个名为“plugins.sbt”的文件:touch plugins.sbt

    5. 通过您喜欢的编辑器编辑 plugins.sbt 文件

    6. 将以下行添加到文件中:

    addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.10.0-RC1")
    
    1. 保存更改

    2. 对 1.0 目录执行以下步骤。检查 1.0 是否存在 在 sbt 目录中输入ls

      • 如果sbt目录下不存在1.0,在sbt目录下输入mkdir 1.0

      • 如果目录中存在1.0,则运行以下命令:cd ~/.sbt/1.0

      • 在该文件夹中创建一个名为“plugins”的目录,输入:mkdir plugins 通过键入以下内容将现有的“plugins.sbt”文件从 0.13 目录复制到当前 1.0 目录:cp ../0.13/plugins/plugins.sbt ./plugins

      • 通过运行以下命令验证插件是否已正确安装:sbt "-Dsbt.log.noformat=true" dependencyTree应该在项目目录中进行测试,运行该命令将生成依赖图.也可以在每次要生成依赖图的时候运行)

    【讨论】:

      猜你喜欢
      • 2014-10-08
      • 2023-03-03
      • 1970-01-01
      • 2016-07-18
      • 2018-03-20
      • 2019-04-02
      • 2018-08-19
      • 1970-01-01
      • 2011-05-19
      相关资源
      最近更新 更多