从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
等价的选项
- 默认的
deps.edn
文件列表,这些文件与CLI的读取方式匹配(这属于模糊措辞,以允许在该“询问”的另一个内容中提出的“额外的deps.edn
文件”以某种方式在此处指定)
在这里的想法是,工具希望模仿Clojure CLI处理deps.edn
文件、别名以及某些其他选项的方式,但t.d.a当前暴露的API太低级,无法轻松实现这一点,我们不希望每个基于t.d.a的工具都必须重复所有多文件合并和别名选择。