从 Slack 复制的讨论
工具通常希望读取 deps.edn
环境作为一组别名,也就是说,工具想要看到的是一个特定的别名集合,这组别名与运行工具所需的别名不同。
这涉及到 -X.. mvn-pom
的工作方式,以及其他在 https://github.com/clojure/tools.deps.alpha/wiki/Tools 上的工具,如 depot
:运行工具所需的环境并不与工具希望用于分析的环境相同。
通过依赖于其自己的运行时环境与放入 JAR 文件中的环境相同但排除自身的方式,“depstar”绕过此问题。这仅仅可行,因为这个工具很小,没有外部依赖。您可以覆盖这一点,并告诉 depstar
使用不同的类路径,但是这种方法对于真正想要查看依赖项版本的工具,如 mvn-pom
、depot
等并不有效。
Alex Miller 说:“datomic ion 开发工具也是另一个例子”
Michiel Borkent 说:“我也有几个只接受 --classpath
参数的工具。但是对于 mvn-pom
,这样可能不太方便,用别名解析版本的列表可能会更好。”
对这里的“提问”进行澄清,以及 Alex 的补充:此过程必须考虑 CLI 已经使用的各种 deps.edn
文件--系统、用户、项目、命令行--并且必须尊重 -Srepro
的等效项,以便用户 deps.edn
可以被省略,如果需要的话。此外,如果 t.d.a 通过 https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects 优化以支持多个“项目”deps.edn
文件,则此过程也应支持这一点。
工具需要的,是它们可以在 t.d.a 中调用的某个东西
- 别名列表
- 相当于
-Srepro
的选项
- 隐含的匹配 CLI 读取方式的
deps.edn
文件列表(这本来是为了允许在那个其他“询问”中所提到的“额外 deps.edn
文件”在此处以某种方式指定而采用的模糊语言
这里的想法是,工具想要模拟 Clojure CLI 如何处理 deps.edn
文件、别名以及某些其他选项,但 t.d.a 提供的当前 API 过于底层,无法轻松实现,我们不希望每个基于 t.d.a 的工具都需要重复所有那些多文件合并和别名选择的过程。