2024 Clojure状态调查! 中分享您的想法。

欢迎!关于怎样工作的更多信息,请参见关于 页面。

0
tools.deps

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

如果-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 属性的部分。
...