【发布时间】:2020-09-14 04:30:32
【问题描述】:
我有一个名为 foo 的 lein 项目。 Foo 有一个资源目录,其中我有另一个名为 bar 的 lein 项目,它有自己的 project.clj。
foo 的 project.clj:
(defproject foo "0.1.0"
:description "Instaboi's drone autonomy software"
:dependencies [[org.clojure/clojure "1.10.0"]
[nrepl "0.8.0"]
]
:repl-options {:init-ns foo.core}
:plugins [[cider/cider-nrepl "0.25.3"]
[lein-environ "1.2.0"]]
:source-paths ["src" "resources/bar/src"]
)
请注意,我添加了一个源路径“resources/bar/src”,以便我可以在 foo 中使用 bar 的命名空间。
bar的project.clj:
(defproject bar "1.47-SNAPSHOT"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:profiles {:dev {:dependencies [[criterium "0.4.5"]]}}
:java-source-paths ["java"]
:plugins [[lein-tools-deps "0.4.5"]]
:middleware [lein-tools-deps.plugin/resolve-dependencies-with-deps-edn]
:lein-tools-deps/config {:config-files [:install :user :project]})
请注意,bar 使用了resolve-dependencies-with-deps-edn 的中间件,因此在 bar 的根文件夹中有一个 deps.edn:
{
:paths ["src"]
:deps {
org.clojure/clojure {:mvn/version "1.10.1"}
camel-snake-kebab {:mvn/version "0.4.0"}
org.clojure/data.json {:mvn/version "1.0.0"}
}
}
问题是这些依赖没有加载,因为它们不存在于 foo 的依赖中。这在 foo 中使用 bar 的模块时会导致错误。如何确保在运行 repl 或在 foo 的根目录下创建 jar 时也加载 bar 项目?
【问题讨论】: