请参与 2024 年 Clojure 状态调查! opinion in the 2024 State of Clojure Survey!

欢迎!请查看 关于 页面,获取更多关于该工作原理的信息。

0
tools.deps

如果不是,它(或类似的东西)可以是吗?这对于允许嵌入 tools.deps 的项目,如 Cursive,无需创建大量文件即可从项目中获取类路径信息是有用的。

如果 -main 将是该功能唯一的官方授权公开API,那么最好以某种方式抽象对 System/exit 的调用,这样嵌入的工具可以捕捉进程退出而不会被杀死。 deps.clj 在这里提供了一个如何做到这一点的示例: https://github.com/borkdude/deps.clj/blob/master/deps.clj#L34-L39

1 答案

0

不,这个类不是公开API,它经常以破坏性的方式进行修改(而且即将再次这样做)。我计划将其从 tools.deps 完全移动到安装程序项目,因为它代表的是 CLI 的一部分,而不是 tools.deps 的一部分。

实际上,你应该通过 clojure.tools.deps/create-basis 来进行大多数操作。我知道 make-classpath2/run-core 和 create-basis 之间存在一些差距,我将很快通过增强 create-basis 返回的一些数据来缩短这段距离(特别是添加基础配置和合并 argmap,以提供对 JVM / main / exec 信息的访问)。

在此之后,这些之间的主要差异将是:1) 支持过时的 CLI 功能(其中一些现在正在消失,一些稍后将消失)和 2) 支持标志 -T,这实际上应该在 deps api 中更直接地得到支持,但这还需要更长时间。最终,make-classpath2 将使用 create-basis —— 这就是未来的方向。

by
任何地方有以支持工具的方式来调用 create-basis 的示例吗?看看代码,我现在不能直接内联 `run-core`,因为这样还没调用 `create-basis`,而且弄清楚 `run-core` 代码与 `create-basis` 相比很复杂。

很难知道如何支持它而不会在未来不久导致崩溃。
by
不知道这是否是进行这种对话的最佳带宽方式,如果您想进行对话,您知道怎么找到我,我很乐意以此为基础写一篇公开文章。这不是秘密知识,但它与上下文相关,并且我不太清楚您需要完成的事情列表。

此外,我现在的工作中也有一些变化,这些变化会影响答案,尤其是关于 exec argmap 属性。
...