欢迎!请查看关于页面,以了解更多关于该功能的信息。
如果一个别名,或使用-Sdeps的工具调用通过使用:replace-deps放弃了项目的依赖项,那么有相当一部分或全部的项目名称空间由于类路径中现在缺少的依赖而变得无法加载。
:replace-deps
如果项目中默认路径中有文件在Clojure启动时自动加载,比如user.clj,那么工具调用可能会失败。通过指定:replace-paths []可以缓解这种情况,但这似乎并不为人所知(示例1,示例2,示例3)。
user.clj
:replace-paths []
我想知道,是否常见的工具有用他们自己的依赖项替换项目的依赖项,但仍使用项目的路径?我相信在大多数情况下,工具的编写者对该项目一无所知,不应该期望从项目自己的路径中找到任何有用的内容。
为了使工具调用更容易设置,在我看来,使:replace-deps暗示:replace-paths [](除非另外指定),或者类似这样是有意义的。
重现案例可以在https://github.com/imrekoszo/depslink3_2#missing-replace-paths-repro-case找到
迁移自https://ask.clojure.org/index.php/9857/could-option-that-variant-sdeps-avoid-having-specify-alias?show=9884#a9884
编辑:更新第一段,改为参考replace-deps而不是replace paths。我不知道为什么我第一次写了replace-paths,这实际上是关于replace-deps的问题:)
更新:按照Alex的说法,这种情况不会发生:https://ask.clojure.org/index.php/11522/x-deps-might-fail-when-user-clj-requires-something?show=11526#c11526
可能是个好主意,让我想想。