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

Ced*_*tin 1 dependencies packages clojure

当我查看类似clojure.data.json源代码的内容时,我可以看到一个命名空间,例如,像这样:

(ns clojure.data.json...)
Run Code Online (Sandbox Code Playgroud)

因此,当我想:在我的.clj Clojure文件中要求时,我只需执行以下操作:

(ns so.example
    (:require [clojure.data.json :as json])
    ...
Run Code Online (Sandbox Code Playgroud)

但是在我的.clj的依赖项中,我有:

:dependencies [[org.clojure/data.json "0.2.4"]
Run Code Online (Sandbox Code Playgroud)

所以clojure.data.json "成了" org.clojure/data.json.

现在,比如说,我在我的依赖项中有server.socket:

[server-socket "1.0.0"]
Run Code Online (Sandbox Code Playgroud)

所以这一次没有添加".org",没有斜线,但点变成了破折号.

Clojure源文件中的require和project.clj中的依赖项之间的关系是什么?有没有"逻辑"?

如何找到依赖项中的正确行?

noi*_*ith 5

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