请分享您的看法,参加2024年Clojure状态调查!

欢迎!请访问关于页面获取更多关于如何使用本站的信息。

+1
tools.deps
编辑

正如标题所说,clj -X:deps tree会忽略-Sdeps选项

$ clj -Sdeps '{:deps {ring/ring-core {:mvn/version "1.9.1"}}}' -X:deps tree
org.clojure/clojure 1.10.2
  . org.clojure/spec.alpha 0.2.194
  . org.clojure/core.specs.alpha 0.2.56

clj -Stree相反

$ clj -Sdeps '{:deps {ring/ring-core {:mvn/version "1.9.1"}}}' -Stree
org.clojure/clojure 1.10.2
  . org.clojure/spec.alpha 0.2.194
  . org.clojure/core.specs.alpha 0.2.56
ring/ring-core 1.9.1
  . ring/ring-codec 1.1.3
    . commons-codec/commons-codec 1.15
  . commons-io/commons-io 2.6
  . commons-fileupload/commons-fileupload 1.4
    X commons-io/commons-io 2.2 :older-version
  . crypto-random/crypto-random 1.2.0
    X commons-codec/commons-codec 1.6 :older-version
  . crypto-equality/crypto-equality 1.0.0

这个行为是有意为之的吗?如果是,那是为什么?

我认为这是故意的,因为我找到了这种行为来自这个似乎是有意为之的改动这里,但我还是不明白原因。

顺便说一下,如果我想使用clj -X:deps tree,我知道有一个这样的解决方案

$ clj -Sdeps ... -Strace
$ clj -X:deps tree :file '"trace.edn"'

3 个回答

+2

被选中
 
最佳答案

是的,这个行为是有意为之的。当作为-X:deps程序运行时,你正在运行一个工具,你使用的任何类路径选项都应用于程序,而不是程序计算的树。

我们仍然在讨论如何将类路径修改选项传递给-X:deps程序本身,可能是通过一组标准的选项,或为计算类路径基的程序提供lib支持。

by
谢谢你的回答!这个解释很有意义。

> 当作为-X:deps程序运行时,你正在运行一个工具,任何你在命令行上使用的类路径选项都适用于程序,而不是适用于程序计算的树。

这意味着第三方-X:deps程序(如库)通常不应依赖于运行时基础吗?
by
-X程序在工具调用中得到注入的运行时基础。这个基础将基于您通过别名指定的工具的类路径。如果使用:replace-deps,项目基础将不会通过clj选项包含(或修改)。如果使用:extra-deps(例如,一个增强项目类路径的测试运行器,而不是替换它),则该基础可能很有用。所以……这取决于。
by
明白了(我发现我有点混淆了"-X:deps程序"和"-X程序")。谢谢你的详细解释!
+2
by

自版本0.12.1148以来,-X:deps tree接受基本设置

$ clj -X:deps tree :extra '{:deps {ring/ring-core {:mvn/version "1.9.1"}}}'
org.clojure/clojure 1.11.1
  . org.clojure/spec.alpha 0.3.218
  . org.clojure/core.specs.alpha 0.2.62
ring/ring-core 1.9.1
  . ring/ring-codec 1.1.3
    . commons-codec/commons-codec 1.15
  . commons-io/commons-io 2.6
  . commons-fileupload/commons-fileupload 1.4
    X commons-io/commons-io 2.2 :older-version
  . crypto-random/crypto-random 1.2.0
    X commons-codec/commons-codec 1.6 :older-version
  . crypto-equality/crypto-equality 1.0.0

您还可以传递例如别名列表,这非常有用

$ clj -X:deps tree :aliases '[:dev :test]'
+1

编辑

这与其他几项决定以及t.d.a.的一些声明的设计目标感觉保持一致。

我最近在这个区域对depstar进行了(较大的)调整:在1.0版本中,它使用运行时/注入基础,某些事情很容易,但某些事情是不可能完成的;在2.0版本中,它使用项目基础,现在一切皆有可能,但某些之前很容易的事情现在变得有点困难。

对我来说,这是一个非常明显的简化。

(顺便说一句,我编辑了标题和描述,使用-X:deps,而不是-Xdeps,这是正确的形式)

...