在当前的.jar文件中获取Clojure名称空间

时间:2012-12-11 00:19:45

标签: clojure namespaces classpath

我正在寻找一种方法来获取当前项目中所有当前名称空间的列表,即在导入的jar,库等中排除名称空间。

目前我发现bultitude似乎非常接近我需要和可以做的事情:

(bultitude.core/namespaces-on-classpath)

然而,这将返回类路径上的所有名称空间,包括“clojure.core”等,而不仅仅是当前项目中的名称空间。

有一种简单可靠的方法可以解决这个问题吗?

2 个答案:

答案 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)