Clojure 项目依赖项和:require之间的命名差异

Clojure 项目依赖项和:require之间的命名差异,clojure,dependencies,packages,Clojure,Dependencies,Packages,当我查看clojure.data.json源代码时,我可以看到一个名称空间,例如: (ns clojure.data.json...) (ns so.example (:require [clojure.data.json :as json]) ... 因此,当我想:在我的.clj Clojure文件中要求这样做时,我只需执行如下操作: (ns clojure.data.json...) (ns so.example (:require [clojure.data.

当我查看clojure.data.json源代码时,我可以看到一个名称空间,例如:

(ns clojure.data.json...)
(ns so.example
    (:require [clojure.data.json :as json])
    ...
因此,当我想:在我的.clj Clojure文件中要求这样做时,我只需执行如下操作:

(ns clojure.data.json...)
(ns so.example
    (:require [clojure.data.json :as json])
    ...
但是,在my.clj中的依赖项中,我有:

因此clojure.data.json“变成”org.clojure/data.json

现在,对于我的依赖项中的server.socket:

[server-socket "1.0.0"]
所以这次没有“.org”添加,没有斜线,但圆点变成了破折号

Clojure源文件中的:require和project.clj中的:dependencies之间有什么关系?有什么“逻辑”吗


如何才能找到放入依赖项的正确行?

项目中的依赖向量。clj是maven工件坐标,通过找到合适的jar来解析依赖项。Leiningen将尝试找到合适的JAR并将其添加到类路径中,以便在运行时从其归档内容中加载命名空间定义和其他资源。代码中的
require
语句指定要在类路径中查找的资源。例如,如果需要
clojure.data.json
,clojure将在类路径中的某个位置查找路径为
clojure/data/json.clj
的资源,并尝试从该资源加载命名空间
clojure.data.json
的定义。

project.clj中的依赖向量是maven工件坐标,用于通过找到适当的jar来解析依赖关系。Leiningen将尝试找到合适的JAR并将其添加到类路径中,以便在运行时从其归档内容中加载命名空间定义和其他资源。代码中的
require
语句指定要在类路径中查找的资源。例如,如果您需要
clojure.data.json
,clojure将在类路径中的某处查找路径为
clojure/data/json.clj
的资源,并尝试从该资源加载命名空间
clojure.data.json
的定义。

没有关系。命名空间是源代码文件中定义的内容。依赖项基于项目名称,由作者在发布时决定。您几乎总能在project github站点或Clojars上找到正确的依赖关系信息,在某些情况下,也可以在maven上找到这些信息。

没有任何关系。命名空间是源代码文件中定义的内容。依赖项基于项目名称,由作者在发布时决定。在项目github站点或Clojars上,或者在某些情况下在maven上,您几乎总能找到正确的依赖信息