当在单一代码仓库中工作时,特别是依赖于单一代码仓库中定义的库时,通常可以通过: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,表明它不在依赖树中)
由于当前的工具.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(必需)- 目录路径(将自动检测是依赖项或pom项目;也见:deps/manifest)
阅读上述内容,《:local/root》可以作为文件型依赖项,这意味着《:deps/root》应该也可以正常工作,因为未提及其他。
能否支持这一点?这将使在开发库或工具时在本地和git依赖项之间切换更容易。
如果可以的话,这可能也是解决至少https://clojure.atlassian.net/browse/TDEPS-132中报告的问题的一部分。
(最初在以下slack线程中提出并讨论:https://clojurians.slack.com/archives/C6QH853H8/p1682712720554439)