从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
参数。但根据工具的不同可能不大方便,获取一个解决版本别名的列表可能更好。”
对这里“提问”的澄清,并附上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
文件(这实际上是一种模糊措辞,允许指定 elsewhere 那个 "ask" 中提出的 "额外deps.edn
文件" 的位置
这里的想法是,工具想要模拟Clojure CLI处理deps.edn
文件和别名以及某些其他选项的方式,但 t.d.a 目前公开的 API 过于低级,使得这一操作变得困难,我们不希望每个基于 t.d.a 的工具都需要重复所有多文件合并和别名选择的过程。