从Slack复制讨论
工具通常希望将deps.edn环境作为一组别名字符集来读取,即工具希望世界像提供了特定的一组别名字符集一样,但这组别名字符集与运行该工具所需的别名字符集不同。
这涉及到-X.. mvn-pom的工作方式,以及https://github.com/clojure/tools.deps.alpha/wiki/Tools上的其他工具,如depot:运行工具所需的环境与工具希望用于分析的环境不同。
depstar通过依赖于其自己的运行时环境与放入JAR文件的相同,但排除自身来解决此问题。这仅适用于是一个非常小的工具,没有外部依赖。您可以覆盖这一功能,告诉depstar使用不同的类路径,但这对于像mvn-pom、depot这样的工具来说不起作用,它们确实想要查看依赖项的版本。
Alex Miller说:“datomic ion开发工具是另一个例子。”
Michiel Borkent说:“我还有一些工具只需接收一个--classpath参数。但这取决于工具。对于mvn-pom来说,可能不是很方便,列出要解析版本的区别可能更好。”
关于“提问”的澄清,以及Alex提供的补充:此过程必须考虑到CLI已使用的各种deps.edn文件 -- 系统、用户、项目、命令行 -- 并必须尊重相当于-Srepro的等效操作,以便用户可以选择省略deps.edn。此外,如果t.d.a增强以支持多个“项目”deps.edn文件,按照https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects,那么此过程还应支持这一点。
工具需要的是t.d.a中的一些可以调用的内容
- 别名列表
- 与
-Srepro
等价的选项
- 隐含的匹配CLI如何读取的
deps.edn
文件的列表(这指的是为了允许在其他“询问”中提出的“额外的deps.edn
文件”在这里 somehow 进行指定的一种弱言词法)
这里的想法是,工具希望模仿Clojure CLI如何处理deps.edn
文件、别名和某些其他选项,但t.d.a当前公开的API过于底层,难以轻松完成,我们不希望基于t.d.a的每个工具都必须重复所有这些多文件合并和别名选择。