【发布时间】:2016-01-10 16:22:36
【问题描述】:
我了解lein deps :tree 显示了所有项目依赖项(隐式和显式)的依赖关系树。但是,“每个依赖项在树中只显示一次。”我真的很想看到一个不是这种情况的树,如果库A 和B 需要库X,库X 会同时出现在A 和B 下。
有谁知道如何使用lein 或其他工具来做到这一点?
【问题讨论】:
标签: clojure tree dependencies leiningen
我了解lein deps :tree 显示了所有项目依赖项(隐式和显式)的依赖关系树。但是,“每个依赖项在树中只显示一次。”我真的很想看到一个不是这种情况的树,如果库A 和B 需要库X,库X 会同时出现在A 和B 下。
有谁知道如何使用lein 或其他工具来做到这一点?
【问题讨论】:
标签: clojure tree dependencies leiningen
您可以从 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。
现在可以使用lein deps :tree 的leiningen 来完成。注意 deps 和 :tree 之间的空格。
【讨论】:
lein deps :tree。
lein deps :tree ...”。这个答案不能解决问题。
这可以在没有 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打印出来了吗?