有没有办法强制Clojure将父命名空间路径映射到某个目录?

时间:2017-02-10 21:22:46

标签: clojure namespaces

我喜欢 boot 让我把所有源文件都放在当前目录中。但是,我仍然希望开发引用父命名空间的代码,以便更容易导入到其他项目中。例如,我想让我的所有命名空间以相同的前缀开头,但仍然将其源文件驻留在当前目录中,如下所示:

(ns polysyndeton.conjunctions ...)  ; in ./conjunctions.clj

(ns polysyndeton.disjunctions ...)  ; in ./disjunctions.clj

(ns polysyndeton.util ...)          ; in ./util.clj

如何判断 boot 或Clojure是否应该在当前目录中找到以polysyndeton.开头的任何命名空间?

2 个答案:

答案 0 :(得分:2)

我认为不可能(没有不推荐的解决方法)。 Clojure使用与命名空间段对应的目录结构来查找类路径上的源文件。所以你必须遵守这个结构。 另请参阅:What are common conventions for using namespaces in Clojure?

答案 1 :(得分:1)

您可以使用符号链接轻松实现此目的。请注意,这会将polysyndeton.polysyndeton.polysyndeton.{...}.util之类的任何字符串映射到文件util.clj

ln -s . polysyndeton