这个问题是在尝试运行一个原来在Windoze上构建的项目时在WSL2上运行Clojure项目时出现的。
原始的:local/root路径以"C:/..."开始,但在WSL2(运行Ubuntu 22)上它们需要转换为"/mnt/c/..."才能运行。
手动更改它们会让它们工作,但这很麻烦。甚至不会提到版本控制的麻烦。
想象一下自动转换规则很糟糕,如果能简单地指定与OS相关的值会更好。可能像这样
{some.ns/some-lib {:local/root
{:local-path/windows "C:/..."
:local-path/linux "/mnt/c/..."
:local-path/macos "/some/other/dev/path"}}}
在运行时,应基于JVM运行的OS选择正确的地方路径值。
当然,这也可能是在运行Parallels的MacOS上出现的问题,那里文件系统集成也很紧密,但来宾操作系统在同一主机上的路径可能具有不同的值。鉴于Linux发行版、Windows版本和MacOS版本的剑桥爆炸,事先知道这些可能不切实际。因此,根据具体开发设置设置这些值是开发者的责任。在我看来,至少提供一些能力来提供具有高度OS选项的映射以替代字符串就足够了。
对我来说,这些值显然都是以开发为中心的,并可能受到雇主DevOps政策的约束。
(是的,这是我的实现偏见,但我将高兴地支持任何处理此问题的通用方法。)