Clojure 使用Leiningen显示完整的依赖关系树
我知道Clojure 使用Leiningen显示完整的依赖关系树,clojure,tree,dependencies,leiningen,Clojure,Tree,Dependencies,Leiningen,我知道lein-deps:tree显示所有项目依赖项(隐式和显式)的依赖项树。然而,“每个依赖项在一个树中只显示一次。”我真的希望看到一个不是这种情况的树,如果库a和B需要库X,库X会同时显示在a和B下 有人知道如何使用lein或其他工具来实现这一点吗?您可以从Leiningen的项目定义中生成Maven的POM,然后使用Maven的依赖项:tree插件和verbose选项,如下所示: $ lein pom $ mvn dependency:tree -Dverbose=true 这将列出由
lein-deps:tree
显示所有项目依赖项(隐式和显式)的依赖项树。然而,“每个依赖项在一个树中只显示一次。”我真的希望看到一个不是这种情况的树,如果库a
和B
需要库X
,库X
会同时显示在a
和B
下
有人知道如何使用
lein
或其他工具来实现这一点吗?您可以从Leiningen的项目定义中生成Maven的POM,然后使用Maven的依赖项:tree
插件和verbose
选项,如下所示:
$ 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
的更多选项,请参见其。现在可以通过lein-deps:tree
使用leiningen完成此操作。注意deps和:tree之间的空格。这可以在不使用Leiningen的情况下完成。使用最小的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
。谢谢对于那些无法访问mvn
的用户,可以在Ubuntu上运行sudo-apt-get-install-maven
。它使用缩进来表示依赖关系,这使得阅读起来很痛苦。OP提到他们已经在使用lein-deps:tree
。请停止对这个答案的投票!!!作者似乎几乎没有读过我的文章,因为我站在那里说“我理解leindeps:tree
…”。这个答案并不能解决问题。我很欣赏tools.deps
(我现在正在使用)的答案,但不幸的是,这并不能回答问题。与lein-deps:tree
一样,clj-Stree
只打印每个dep一次,因此它在确定可能存在依赖冲突的位置时没有那么有用。这似乎最近发生了变化,现在clj-Stree
打印了所有内容吗?