当与单一代码库一起工作,特别是依赖于在单一代码库中定义的库时,通常可以通过:git/url,tag,sha
和:deps/root
导引入库,例如:
; clojure -Sdeps '{:deps {polylith-kaocha/kaocha-wrapper
{:git/url "https://github.com/imrekoszo/polylith-kaocha"
:git/sha "d1fcd406cf0813b836419e39706ae61929a391a2"
:deps/root "projects/kaocha-wrapper"}}}' -Stree | grep 'lambdaisland/kaocha'
. lambdaisland/kaocha 1.68.1059
在某些情况下,为了开发和调试,克隆单一代码库并使用:local/root
引用其库是有益的。然而,简单地替换 git 属性并指向本地文件夹目前并不工作(Clojure CLI 版本 1.11.1.1273)
; clojure -Sdeps '{:deps {polylith-kaocha/kaocha-wrapper
{:local/root "/Users/ikoszo/imre/oss/polylith-kaocha"
:deps/root "projects/kaocha-wrapper"}}}' -Stree | grep 'lambdaisland/kaocha'
(注意不显示 lambdaisland/kaocha,表示它不在依赖树中)
由于 tools.deps 目前似乎忽略了用于 :local/root
依赖项的 :deps/root
,开发者目前必须将它们组合成 :local/root
,如下所示:
; clojure -Sdeps '{:deps {polylith-kaocha/kaocha-wrapper
{:local/root "/Users/ikoszo/imre/oss/polylith-kaocha/projects/kaocha-wrapper"}}}' -Stree | grep 'lambdaisland/kaocha'
. lambdaisland/kaocha /Users/ikoszo/imre/oss/kaocha
. lambdaisland/kaocha /Users/ikoszo/imre/oss/kaocha
在https://clojure.org/reference/deps_and_cli,下面是目前声明的:
常用的坐标属性(所有均为可选)
...
:deps/root - 基于文件的依赖关系中的相对目录路径,在其中搜索清单文件
和
本地项目属性
:local/root(必需)- 目录路径(将自动检测是否为 deps 或 pom 项目,也请参阅 :deps/manifest)
阅读上述内容,:local/root
可以被视为基于文件的依赖关系,这对我来说意味着: deps/root
应该像未声明的那样工作。
可以添加对此项的支持吗?这将使在开发库或工具时在本地和 git 依赖关系之间切换生活更轻松。
如果可以,这可能也是一种解决至少一部分在https://clojure.atlassian.net/browse/TDEPS-132中报告的问题的方法
(最初在此Slack讨论中提出和讨论:https://clojurians.slack.com/archives/C6QH853H8/p1682712720554439)