【问题标题】:Naming differences between project dependencies and :require项目依赖和 :require 之间的命名差异
【发布时间】:2014-06-23 01:55:23
【问题描述】:

当我查看诸如 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 中的 :dependencies 有什么关系?有什么“逻辑”吗?

我怎样才能找到放入依赖项的正确行?

【问题讨论】:

    标签: clojure dependencies packages


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-11-07
        • 1970-01-01
        • 2017-12-12
        • 2016-06-08
        • 1970-01-01
        • 2018-03-06
        • 1970-01-01
        • 2012-03-24
        • 1970-01-01
        相关资源
        最近更新 更多