我喜欢 boot 让我把所有源文件都放在当前目录中。但是,我仍然希望开发引用父命名空间的代码,以便更容易导入到其他项目中。例如,我想让我的所有命名空间以相同的前缀开头,但仍然将其源文件驻留在当前目录中,如下所示:
(ns polysyndeton.conjunctions ...) ; in ./conjunctions.clj
(ns polysyndeton.disjunctions ...) ; in ./disjunctions.clj
(ns polysyndeton.util ...) ; in ./util.clj
如何判断 boot 或Clojure是否应该在当前目录中找到以polysyndeton.
开头的任何命名空间?
答案 0 :(得分:2)
我认为不可能(没有不推荐的解决方法)。 Clojure使用与命名空间段对应的目录结构来查找类路径上的源文件。所以你必须遵守这个结构。 另请参阅:What are common conventions for using namespaces in Clojure?
答案 1 :(得分:1)
您可以使用符号链接轻松实现此目的。请注意,这会将polysyndeton.polysyndeton.polysyndeton.{...}.util
之类的任何字符串映射到文件util.clj
:
ln -s . polysyndeton