【问题标题】:How to nest lein projects?如何嵌套 lein 项目?
【发布时间】: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 项目?

【问题讨论】:

    标签: clojure leiningen


    【解决方案1】:

    我会单独构建/安装栏。我相信你可以在 Foo 的 project.clj 中使用lein profiles 来实现这一点。这样您以后可以将其作为依赖项添加到 Foo 中。

    我建议这样做,因为您似乎只需要访问 Foo 中 bar 的命名空间,并且没有明确的理由将它们耦合。

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 2014-09-28
      • 2016-02-21
      • 1970-01-01
      • 2021-09-25
      • 2016-10-01
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      相关资源
      最近更新 更多