讨论从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
文件",以某种方式在这里指定
这里的想法是工具想模仿Clojure CLI处理deps.edn
文件和别名以及某些其他选项的方式,但t.d.a当前公开的API太底层,无法轻松实现,我们不希望基于t.d.a的每个工具都必须重复所有这些多文件合并和别名选择。