2

Clojure と ClojureScript の両方で動作するライブラリに取り組んでいます。

ライブラリの project.clj は次のとおりです。

(defproject libtest "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.4.0"]]
  :plugins [[lein-cljsbuild "0.3.0"]]
  :cljsbuild
    {:crossovers [libtest],
     :crossover-jar true
     :jar true
    :builds
    [{:source-paths ["src/libtest"], :crossover-path "src/libtest"}]})

別のプロジェクトに依存関係として含めています。プロジェクトの ClojureScript 側から動作させるには、project.clj の cljsbuild キーの下にクロスオーバーとして正確な名前空間を追加する必要がありました。

 (defproject some-other-project
    ...
    :dependencies [[org.clojure/clojure "1.5.0"]
                   [libtest "0.1.0-SNAPSHOT"]]
    :cljsbuild {
        :builds [{
    ...
            :crossovers [libtest.core]
    ...

私の質問は、これは必要ですか?クラスパス上にある場合、使用する名前空間を具体的に伝える必要があるのはなぜですか? 数十の名前空間を使用する必要があり、そのうちのいくつかは他の名前空間などを参照する必要がある場合、これはうまくスケーリングできません。

4

1 に答える 1

0

これは完璧な解決策ではありませんが、私にとってはうまくいきます。名前空間がクロスオーバーとして指定されると、その子が再帰的に追加されます。ということでこちらも:crossovers [libtest]追加libtest.core。を指定すると:crossover-path、そのディレクトリに生成されるファイルを確認できます。

于 2013-04-02T19:43:48.637 に答える