此问题是在尝试使用最初在Windows操作系统上构建的项目运行Clojure项目在WSL2上时出现的。
原始的:local/root路径以"C:/..."开头,但需要在WSL2(运行Ubuntu 22)上将其转换为"/mnt/c/..."才能运行。
手动修改它们可以使其工作,但很麻烦。甚至不愿提及源代码控制问题。
自动转换规则的想象令人不快,如果能简单地指定针对特定操作系统的值就更好了。例如:
{some.ns/some-lib {:local/root
{:local-path/windows "C:/..."
:local-path/linux "/mnt/c/..."
:local-path/macos "/some/other/dev/path"}}}
在运行时,应根据JVM运行的操作系统选择适当的本地路径。
当然,这个问题也可能出现在运行Parallels的MacOS上,在那里文件系统集成也很紧密,但客户端操作系统在宿主操作系统上的同一路径可能有不同的值。鉴于Linux发行版、Windows版本和MacOS版本的Cambrian爆炸,事先知道这些值可能并不实际。因此,这可能是由开发人员根据具体开发环境来设置这些值的责任。所以,在我看来,如果可以提供一种方式来提供包含某些高级操作系统选项的映射,用以替代字符串选项,那就足够了。
对我来说,这些值似乎始终都是以开发人员为中心的,并可能受到雇主DevOps政策的约束。
(是的,这是我的实现偏差,但我会很高兴地支持任何处理此问题的一般方法。)