请在 2024 年 Clojure 状态调查!中分享您的想法。

欢迎!请访问 关于 页面以了解更多关于其工作原理的信息。

0
tools.deps
如果在 A/deps.edn 中有

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


那么在 /Wherever/deps.edn

{:deps {...}}  ;; 没有paths,只有deps。

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

*解决方法*
总是指定:paths

4 个回答

0

由:matthias.margush 发表评论

嗨。我已经上传了一个补丁用于讨论这个错误。

补丁中提出的方法是
- 添加一个带有回退值的 default-paths 配置。类似于 extra-paths,多个 default-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 报告)
...