2024 Clojure状态调查!中分享您的观点。

欢迎!请参阅关于页面以了解如何使用本站。

0
tools.deps

如果不是的话,它(或类似的东西)可以吗?这对于像Cursive这样的嵌入tools.deps的项目能够从项目中获取classpath信息而不必弄一堆文件很有用。

如果-main将是这个功能的唯一官方授权公共API,那么最好以某种方式抽象出对System/exit的调用,这样嵌入的工具可以在不被杀死的情况下捕获进程退出。deps.clj在这里有一个这样的例子:[https://github.com/borkdude/deps.clj/blob/master/deps.clj#L34-L39](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,这就是它的方向。

有没有一个示例,说明如何以支持工具的方式调用create-basis?查看代码,我现在不能直接内联`run-core`,因为这还没有调用`create-basis`,相对于`create-basis`来说,理解`run-core`代码的复杂性是困难的。

很难知道如何以这种方式支持它,而不会在不久的将来出问题。
我不知道这是不是进行这种对话的最佳带宽方式,如果您需要一个对话,您知道在哪里找到我,我很乐意将此写作公开。这不是秘密知识,但它依赖于上下文,我并不完全清楚您需要执行的一系列操作。

此外,我目前的工作中有些变化会影响答案,尤其是在exec argmap属性方面。
...