请在 Clojure 2024 年调查问卷! 中分享您的观点。

欢迎!请查看 关于 页面,了解更多关于这个网站的信息。

0 投票
tools.deps
如果您有一个 A/deps.edn,包含

{:paths ["src/main/clojure"]
 :deps {something/else {:local/root "/Wherever"}}}
}


那么在 /Wherever/deps.edn 中

{:deps {...}}  ;; 不包含 pathways,只有依赖。

当您在 A 中运行 clj -Spath 时,依赖项会意外地获取 A: /Wherever/src/main/clojure 的 pathways
而当我们从依赖项内部运行 clj -Spath 时,则会从系统默认的 deps.edn 中获取 pathways

*解决方案*
始终指定 :paths

4 个答案

0 投票

由:matthias.margush 评论

嗨。我已经上传了这个错误的补丁以供讨论。

补丁中提出的方案是:
- 添加一个具有默认值的 default-paths 配置。多个 default-paths 定义将被合并,类似于 extra-paths
- 在解析依赖项时不再合并 paths。相反,直接使用依赖项的 paths。如果没有路径,则使用合并的 default-paths

如果任何现有的配置依赖于现有逻辑的累积性质,这将是一个破坏性的变更。

0 投票

由:matthias.margush 评论

(看不到我上传的第一个附件。最近的附件有一个小的修改。谢谢。)

0 投票
_评论者:kommen_

遇到相同问题,易于复制

这行得通


clj -Srepro -Sdeps '{:deps {com.bhauman/figwheel-core {:git/url "https://github.com/mfikes/figwheel-core :sha "f05c62bba743d16f1fc4d16814365db726dc97b7"}}}' -e "(require 'figwheel.core)"


这会引发一个 {{java.io.FileNotFoundException: 无法在类路径中找到 figwheel/core__init.class, figwheel/core.clj 或 figwheel/core.cljc.}}

 
clj -Srepro -Sdeps '{:paths ["foo/src"] :deps {com.bhauman/figwheel-core {:git/url "https://github.com/mfikes/figwheel-core :sha "f05c62bba743d16f1fc4d16814365db726dc97b7"}}}' -e "(require 'figwheel.core)"
 


0 投票
参考: https://clojure.atlassian.net/browse/TDEPS-52 (由 gshayban 报告)
...