使用 Leiningen 显示完整的依赖树

Display complete dependency tree with Leiningen

我知道 lein deps :tree 显示所有项目依赖项(隐式和显式)的依赖树。但是,"each dependency is only shown once within a tree." 我真的很想看到一棵树,但情况并非如此,如果库 AB 需要库 X,库 X 出现在 AB 下。

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

您可以从 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

这现在可以通过 lein deps :tree 使用 leiningen 来完成。注意 deps:tree 之间的 space。

这可以在没有 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