如何解决为什么 clojure deps 在使用 `:local/root` 时将 `/main/clojure` 添加到类路径?
我正在尝试使用 deps.edn
中的 tools.deps :local/root
选项将一个本地项目链接到另一个正在开发的本地项目。它不起作用。我不能要求库的命名空间,而且路径是正确的。
deps.edn 条目如下所示:
{:paths ["src" "resources"]
:deps {...
...
...
mylib {:local/root "../../../mylib"}
}}
然而,生成的类路径不正确:
../../../mylib/src/main/clojure
出于某种原因,clojure/main
被添加到这个库的类路径中,我不知道为什么。然后当我运行 clj
来启动 repl 时,我无法加载库,并且我得到了 FileNotFoundException
。
为了测试将 main/clojure
添加到 lib 路径是否有问题,我手动删除了 .cpcache
目录中缓存文件中的那部分路径,并且能够要求库命名空间一次我已经删除了 clojure/main
。
有谁知道 main/clojure
的来源以及如何阻止它被添加?
更新
我做了一个新的测试,这让我认为这与在目标项目中使用 project.clj 而不是 deps.edn 有关。在测试中,我有一个带有 b
的项目 deps.edn
,如下所示:
{:deps {a-proj {:local/root "../a-proj"}}}
虽然 a-proj
有这样的 project.clj
:
(defproject a-proj "0.1.0-SNAPSHOT"
:description "blah"
:url "http://example.com/FIXME"
:license {:name "The MIT Licence"
:url "https://opensource.org/licenses/MIT"}
:source-paths ["src"]
:dependencies [])
然后我运行 clj -Sforece -Spath
并得到:
~/Projects/b > clj -Sforce -Spath ethan at rembrandt.local src:/Users/ethan/.m2/repository/org/clojure/clojure/1.10.0/clojure-1.10.0.jar:/Users/ethan/Projects/b/src:/Users/ethan/Projects/a- proj/src/main/clojure:/Users/ethan/.m2/repository/org/clojure/spec.alpha/0.2.176/spec.alpha-0.2.176.jar:/Users/ethan/.m2/repository/ org/clojure/core.specs.alpha/0.2.44/core.specs.alpha-0.2.44.jar
您可以在那里看到添加了 /main/clojure
路径。当我在 deps.edn
中使用本质上的 a-proj
时:
{:deps {}}
我得到以下路径,这似乎是正确的:
~/Projects/b > clj -Sforce -Spath
src:/Users/ethan/.m2/repository/org/clojure/clojure/1.10.0/clojure-1.10.0.jar:/Users/ethan/Projects/b/../a-proj/src:/Users /ethan/.m2/repository/org/clojure/spec.alpha/0.2.176/spec.alpha-0.2.176.jar:/Users/ethan/.m2/repository/org/clojure/core.specs.alpha/ 0.2.44/core.specs.alpha-0.2.44.jar
我在 ~/.clojure 中的 deps.edn
只有这个:
{
:aliases {
:new {:extra-deps {seancorfield/clj-new {:mvn/version "0.9.0"}}
:main-opts ["-m" "clj-new.create"]}
:deps {:extra-deps {org.clojure/tools.deps.alpha {:mvn/version "0.5.435"}}}
:test {:extra-paths ["test"]}
}
}
解决方法
Clojure CLI 通过 deps.edn 不支持将 project.clj 作为项目类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。