这个问题是在尝试运行一个基于Windoze构建的项目时在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运行的操作系统选择正确的本地路径值。
当然,这也可能是MacOS上运行Parallels时的问题,其中文件系统集成也很紧密,但来宾操作系统在宿主机上对同一路径可能有不同的值。鉴于Linux发行版、Windows版本和MacOS版本的Cambrian爆炸,预先知道这些值可能不切实际。根据具体的开发设置,开发者负责设置这些值。因此,我认为,如果要提供一个包含某些高级操作系统选项的映射而不是字符串,将是有益的。
对我来说,这些值显然将始终以开发人员为中心,并且可能受雇主devops策略的影响。
(是的,这是我的实现偏差,但我将乐意支持任何处理此问题的通用方式。)