讨论来自Slack的副本
工具通常希望将deps.edn
环境视为一系列别称,即工具希望以提供一组与运行工具所需的别称不同的别称来查看世界。
这涉及到-X.. mvn-pom
如何工作,以及其他工具如depot
(请参阅https://github.com/clojure/tools.deps.alpha/wiki/Tools)的工作方式:运行工具的环境并不相同于工具想要用于分析的环境。
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,那么此过程也应支持。
工具需要的是一种方式,通过它可以调用
- 别名列表
- 相当于
-Srepro
的选项
- 以下列出了匹配CLI如何读取的
deps.edn
文件的隐式列表(这里的意图是要使用模糊词语来允许在该“其他请求”中提出的“额外的deps.edn
文件”在此处以某种方式指定
这里的想法是工具要模仿Clojure CLI处理deps.edn
文件以及别名和某些其他选项的方式,但当前由t.d.a公开的API过于低级,无法轻松实现这一点,我们也不希望基于t.d.a的每个工具都重复所有那些多文件合并和别名选择。