1

現在のプロジェクトの現在のすべての名前空間のリストを取得する方法を探しています。つまり、インポートされたjar、ライブラリなどの名前空間を除外します。

現在、私は私が必要とし、実行できるものにかなり近いように見える膨らみを見つけました:

(bultitude.core/namespaces-on-classpath)

ただし、これにより、現在のプロジェクトの名前空間だけでなく、「clojure.core」などを含むクラスパス上のすべての名前空間が返されます。

これを解決するための簡単で信頼できる方法はありますか?

4

2 に答える 2

2

tools.namespace libはどうですか?APIがあります:

find-namespaces-in-dir
find-namespaces-in-jarfile
find-namespaces-on-classpath
于 2012-12-11T00:47:58.557 に答える
1

まあ、それは異なります。

bultitudeの背後にある考え方は、クラスパス上の名前空間のリストを提供することです。そのクラスパス上のすべての.cljファイルが考慮されます。

ただし、特定のプレフィックスで始まる名前空間のみを検索できます。通常、プロジェクトは名前空間の特定のプレフィックスで始まります。それはうまくいくでしょうか?readmeの例:

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)
于 2012-12-11T04:03:18.293 に答える