Clojure 在哪里可以找到Leiningen中依赖项的有效版本号

Clojure 在哪里可以找到Leiningen中依赖项的有效版本号,clojure,leiningen,clojure-contrib,Clojure,Leiningen,Clojure Contrib,我是Clojure和Leiningen的新手,我已经确定我想要使用的一些函数位于Clojure.contrib.generic.math-functions中。我在上找到了相关的API信息,但我找不到任何东西可以帮助我确定应该在project.clj文件中为该依赖项添加哪些内容 我尝试过[clojure.contrib.generic.math-functions“1.1”],[clojure.contrib.generic.math-functions“1.1.x”],以及[clojure.c

我是Clojure和Leiningen的新手,我已经确定我想要使用的一些函数位于Clojure.contrib.generic.math-functions中。我在上找到了相关的API信息,但我找不到任何东西可以帮助我确定应该在project.clj文件中为该依赖项添加哪些内容

我尝试过
[clojure.contrib.generic.math-functions“1.1”]
[clojure.contrib.generic.math-functions“1.1.x”]
,以及
[clojure.contrib.generic.math-functions“1.1.0”]
。对于其中的每一个,我都会得到类似于

...
Caused by: org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException: Missing:
----------
1) clojure.contrib.generic.math-functions:clojure.contrib.generic.math-functions:jar:1.1

所有clojure contrib命名空间都在一个jar文件中提供,其依赖项必须如下所示:

[org.clojure/clojure-contrib "1.2.0"]
请注意,该工件有不同的可用版本。1.2.0是当前稳定的版本

为了在clojure代码中使用来自math functions命名空间的函数,您需要选择一个或多个这样的命名空间,通常在源文件开头的
ns
表单中执行:

(ns my.namespace
    (:use [clojure.contrib.generic.math-functions]))
(ns your-namespace
    (:use [clojure.contrib.generic.math-functions :as mathf]))

查看一下
使用
要求

之间的区别您通常可以在以下位置找到所需内容-这是leiningen的默认存储库。Clojure当前的稳定版本是1.2.0,因此您可以在leiningen
项目中使用它。clj

[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]
要在clojure中使用通用数学函数,
require
在源文件顶部的命名空间声明中使用它:

(ns my.namespace
    (:use [clojure.contrib.generic.math-functions]))
(ns your-namespace
    (:use [clojure.contrib.generic.math-functions :as mathf]))
这允许您像这样引用该命名空间中的函数:

(mathf/abs -10) ;; => 10
:使用
-将命名空间与
:as
绑定是在代码中使用其他命名空间函数的首选方法
require
是可以的,但是您必须在函数前面加上整个名称空间(例如
clojure.contrib.generic.math functions/abs
),所以这不实用。使用不带
:as
的名称空间允许您使用这些函数而不带任何前缀(例如
abs
),但您更可能会遇到名称空间冲突,并且可能很难看到函数来自何处,特别是当您使用
:许多库时

您可以通过签出来浏览默认leiningen存储库中的所有可用库。
clojure contrib
的结构在1.3.0版本发布后将发生变化,因此如果您使用的是1.3.0-alpha-xx版本,则必须包含特定的contrib库:

[org.clojure.contrib/generic "1.3.0-alpha4"]

下一个版本的Leiningen将有一个搜索任务来实现这一目的。它将搜索Clojars、Maven Central和您的项目列出的任何其他存储库,只要它们提供可下载的索引。它已经实现了,所以如果您从git运行Leiningen,就可以使用它


此外,Leiningen教程也介绍了这一点。键入“lein help tutorial”。

既然clojure.contrib已被分解,那么数学函数就位于math.numeric-tower中。lein依赖项的指定方式如下:

(mathf/abs -10) ;; => 10
[org.clojure/math.numeric-tower“0.0.1”]

例如,您可以在适当的情况下使用或要求


(使用“[clojure.math.numeric tower])

谢谢。使用您的示例,My
lein deps
现在可以正常工作。你在哪里找到那个版本号的?是从“开关标签”下拉列表中找到的吗?根据这个帖子中的其他评论,当前的稳定版本是1.2.0,我更新了我的帖子以反映这一点。可以看到其他可用版本不使用richhickey repo。所有积极的开发已经进行了很长一段时间,但是richhickey的东西仍然首先出现在谷歌上,因为它链接了很多东西。感谢clojars.org链接。这很有帮助!Clojure目前的稳定版本是1.2.1,但Contrib仍然是1.2.0。“richhickey”回购协议已经过时-现在一切都由“clojure”组织管理:-不幸的是,谷歌仍然有很多旧链接:(还请注意Clojure 1.3.0正在开发中,Contrib正在重新组织/更新,因此不再有单一的Contrib库。有关更多信息,请参阅本页:是的,clojars.org上有很多,但不是所有内容——有些可能需要在maven.org上,有些则不在这两个地方删除这个人或那个人上传的许多旧版本的库(并且可能以你不需要的方式进行黑客攻击).据我所知,OP问题的答案是:搜索clojars.org、搜索maven.org、谷歌it、猜猜——祝你好运!以下是该库最新稳定版本文档的正确链接:
lein Search math
似乎不会搜索contribs,因为它们不在clojars或central中。(v1.6.1)你还需要知道你想要什么版本,阿飞。