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

Ste*_*sen 14 clojure clojure-contrib leiningen

我是Clojure和Leiningen的新手,我已经确定我想要使用的一些内容位于clojure.contrib.generic.math-functions中.我在http://richhickey.github.com/clojure-contrib/branch-1.1.x/math-api.html找到了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
Run Code Online (Sandbox Code Playgroud)

sku*_*uro 11

所有clojure-contrib名称空间都在一个jar文件中提供,其依赖关系必须列为:

[org.clojure/clojure-contrib "1.2.0"]
Run Code Online (Sandbox Code Playgroud)

请注意,该工件有不同的版本.1.2.0是目前的稳定版本.

为了在clojure代码中使用来自math-functions命名空间的函数,您需要使用require或者use这样的命名空间,通常在ns源文件开头的表单中完成:

(ns my.namespace
    (:use [clojure.contrib.generic.math-functions]))
Run Code Online (Sandbox Code Playgroud)

看看这里use和之间的区别require.


小智 9

下一版Leiningen将为此目的进行搜索任务.它将搜索Clojars,Maven Central以及您的项目列出的任何其他存储库,前提是它们提供可下载的索引.它已经实现了,所以如果你从git运行Leiningen你可以使用它.

此外,Leiningen教程涵盖了这一点.输入"lein help tutorial".


Ger*_*ert 5

您通常可以在clojars.org上找到所需内容 - 它是leiningen的默认存储库.目前Clojure的稳定版本是1.2.0,所以你在leiningen有这个project.clj:

[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]
Run Code Online (Sandbox Code Playgroud)

要在clojure中使用泛型数学函数,require或者use在源文件顶部的命名空间声明中使用它:

(ns your-namespace
    (:use [clojure.contrib.generic.math-functions :as mathf]))
Run Code Online (Sandbox Code Playgroud)

这允许您像这样引用该命名空间中的函数:

(mathf/abs -10) ;; => 10
Run Code Online (Sandbox Code Playgroud)

:use-ing namespaces :as是在代码中使用其他命名空间中的函数的首选方法.require没关系,但你必须在函数前面加上整个命名空间(例如clojure.contrib.generic.math-functions/abs),这样就不实用了.使用命名空间:as不允许您使用这些函数而根本没有任何前缀(例如abs),但是您更有可能获得命名空间冲突,并且可能很难看到函数的来源,特别是如果您有:use许多库.

您可以通过访问http://clojars.org/repo/浏览默认leiningen存储库中提供的所有库.clojure-contrib当1.3.0发布时,结构将发生变化,因此如果您使用的是1.3.0-alpha-xx版本,则必须包含特定的contrib库:

[org.clojure.contrib/generic "1.3.0-alpha4"]
Run Code Online (Sandbox Code Playgroud)