我正在寻找一种方法来获取当前项目中所有当前名称空间的列表,即在导入的jar,库等中排除名称空间。
目前我发现bultitude似乎非常接近我需要和可以做的事情:
(bultitude.core/namespaces-on-classpath)
然而,这将返回类路径上的所有名称空间,包括“clojure.core”等,而不仅仅是当前项目中的名称空间。
有一种简单可靠的方法可以解决这个问题吗?
答案 0 :(得分:2)
tools.namespace lib怎么样?有api:
find-namespaces-in-dir
find-namespaces-in-jarfile
find-namespaces-on-classpath
答案 1 :(得分:1)
嗯,这取决于。
bultitude背后的想法是在类路径上提供名称空间列表。将考虑该类路径上的任何.clj文件。
但是,您只能查找以特定前缀开头的命名空间。通常,项目也以其名称空间中的特定前缀开头。那会有用吗?自述文件中的示例:
user=> (b/namespaces-on-classpath :prefix "bultitude")
(bultitude.core-test bultitude.core)
如果这还不够好,你可以尝试给它一个只有你的文件所在的类路径,但这可能效果不好。
user=> (b/namespaces-on-classpath :prefix "bultitude" :classpath "src:test")
(bultitude.core bultitude.core-test)