【问题标题】:Display complete dependency tree with Leiningen使用 Leiningen 显示完整的依赖关系树
【发布时间】:2016-01-10 16:22:36
【问题描述】:

我了解lein deps :tree 显示了所有项目依赖项(隐式和显式)的依赖关系树。但是,“每个依赖项在树中只显示一次。”我真的很想看到一个不是这种情况的树,如果库AB 需要库X,库X 会同时出现在AB 下。

有谁知道如何使用lein 或其他工具来做到这一点?

【问题讨论】:

    标签: clojure tree dependencies leiningen


    【解决方案1】:

    您可以从 Leiningen 的项目定义中生成 Maven 的 POM,然后使用带有 verbose 选项的 Maven 的 dependency:tree 插件,如下所示:

    $ lein pom
    $ mvn dependency:tree -Dverbose=true 
    

    这将列出由于各种原因而省略的依赖项,例如:

    |  +- ring:ring-core:jar:1.4.0:compile
    |  |  +- (org.clojure:clojure:jar:1.5.1:compile - omitted for conflict with 1.7.0)
    |  |  +- (org.clojure:tools.reader:jar:0.9.1:compile - omitted for conflict with 0.10.0-alpha3)
    |  |  +- (ring:ring-codec:jar:1.0.0:compile - omitted for duplicate)
    

    有关dependency:tree 的更多选项,请参阅其documentation

    【讨论】:

    • 太棒了。谢谢。对于那些无法访问mvn 的人,您可以在Ubuntu 上运行sudo apt-get install maven
    【解决方案2】:

    现在可以使用lein deps :treeleiningen 来完成。注意 deps:tree 之间的空格。

    【讨论】:

    • 在撰写本文时,此命令并未显示实际的树。它使用缩进来表示依赖关系,这使得阅读起来很痛苦。
    • OP 提到他们已经在使用lein deps :tree
    • 请停止为这个答案投票!!!作者似乎几乎没有读过我的帖子,因为我坚持说“我明白lein deps :tree ...”。这个答案不能解决问题。
    【解决方案3】:

    这可以在没有 Leiningen 的情况下使用 tools.deps 完成。使用最小的deps.edn 文件,例如:

    {:deps {}}
    

    然后查看树:

    % clj -Stree
    org.clojure/clojure 1.10.1
      org.clojure/spec.alpha 0.2.176
      org.clojure/core.specs.alpha 0.2.44
    

    【讨论】:

    • 我很欣赏tools.deps(我现在正在使用)的答案,但不幸的是,这并不能回答问题。与lein deps :tree 一样,clj -Stree 只打印每个 dep 一次,因此对于确定可能存在依赖冲突的位置没有那么有用。
    • 最近好像变了,现在clj -Stree打印出来了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    相关资源
    最近更新 更多