讨论内容来自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
相等的选项
- 隐含的匹配CLL(命令行界面)读取方式的
deps.edn
文件列表(目的是用模糊的语言来允许某种“额外的 deps.edn
文件”在该其他“提问”中以某种方式在此处指定)
这里的想法是,工具想要模仿Clojure CLI处理 deps.edn
文件、别名和某些其他选项的方式,但t.d.a当前暴露的API过于底层,难以实现,我们也不希望基于t.d.a的每个工具都不得不重复所有多文件合并和别名选择。