当我查看类似 clojure.data.json 的源代码时,我可以看到一个名称空间,例如,像这样:
(ns clojure.data.json...)
所以,当我想在我的 .clj Clojure文件中:require 时,我只是这样做:
(ns so.example
(:require [clojure.data.json :as json])
...
但是在 .clj 的依赖项中,我有:
:dependencies [[org.clojure/data.json "0.2.4"]
所以 clojure.data.json "成了" org.clojure / data.json
现在,比如, server.socket 我在我的依赖项中:
[server-socket "1.0.0"]
所以这次没有" .org"添加,没有斜线,但点变成破折号。
Clojure源文件中的require和 project.clj 中的依赖项之间的关系是什么?有没有"逻辑"?
如何找到要在依赖项中输入的正确行?
答案 0 :(得分:5)
project.clj
中的依赖关系向量是maven工件坐标,通过查找适当的jar来解析依赖关系。 Leiningen将尝试找到适当的jar并将它们添加到类路径中,以便可以在运行时从其归档内容中加载名称空间定义和其他资源。代码中的require
语句指定要在类路径中查找的资源。例如,如果您需要clojure.data.json
,Clojure将在您的类路径中的某处查找路径为clojure/data/json.clj
的资源,并尝试从该资源加载名称空间clojure.data.json
的定义。
答案 1 :(得分:2)
没有关系。命名空间是源代码文件中定义的内容。依赖项基于项目名称,由作者在发布时决定。您几乎总能在项目github站点或Clojars上找到正确的依赖信息,或者在某些情况下,在maven上找到。