Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Clojure/ClojureScript交叉库_Clojure_Clojurescript - Fatal编程技术网

使用Clojure/ClojureScript交叉库

使用Clojure/ClojureScript交叉库,clojure,clojurescript,Clojure,Clojurescript,我正在开发一个可以同时使用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.or

我正在开发一个可以同时使用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端工作,我必须在我的项目的cljsbuild键下添加确切的名称空间作为交叉。clj:

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

我的问题是,这有必要吗?如果它在类路径上,为什么我必须明确告诉它我将使用什么名称空间?如果我需要使用几十个名称空间,其中一些将引用其他名称空间等等,那么这不能很好地扩展。

这不是一个完美的解决方案,但对我来说很有用。将命名空间指定为交叉时,将递归添加其子级。所以
:交叉[libtest]
也将添加
libtest.core
。如果指定一个
:交叉路径
,则可以查看生成到该目录中的文件。

在库本身的project.clj中工作,但在使用库的项目中不工作。