Clojure应用程序由多个Leiningen子项目组成时,代码库的导航变得越来越复杂。此时,项目不再是单一的代码树,而是多个根目录。特别是在像Emacs这样的开发环境中,需要不断返回到project-b/src/foo/bar/baz.clj等深层文件夹,增加了开发者的工作量。为了解决这个问题,Linker提出了一个(非常实验性的)解决方案。

Linker通过获取所有子项目的列表,创建一个超级项目,并将所有子项目中的源文件通过符号链接的方式映射到该超级项目中。这样,开发者可以在一个统一的视图中更轻松地导航子项目的源代码。虽然这个方法看似简单,但其本质上是一个廉价且有效的解决方案,可以有效地缓解子项目间导航的复杂性。

然而,Linker并非完美无缺,它存在一些局限性:

  • 新文件不会自动添加到超级项目中,可能会在未来版本中解决。

  • 新子项目不会自动链接到超级项目中。

  • 符号链接可能会导致某些IDE出现兼容性问题。

  • 它并没有解决版本管理的问题。

总的来说,Linker是一个简便的工具,适合需要快速改进导航体验的开发者,尽管它并不解决所有复杂问题。