18

我正在学习 Clojure 并且来自 Ruby 背景。

我正在寻找类似的东西gem install <library>。的各种咒语lein install似乎不适合这个法案。

有没有办法简单地在本地安装一个库,以便可以在 REPL 中引用它而无需创建项目?

4

5 回答 5

6

如果您的目标只是在 REPL 中加载库,请考虑使用alembic. 它动态加载类路径、解析依赖关系并自动从存储库中提取库。

这是一个用例:

(require 'alembic.still)
(alembic.still/distill '[enlive "1.1.1"])

它只需要您将以下条目添加到您的.lein/project.clj

{:dev {:dependencies [[alembic "0.1.1"]]}}

看到这个答案

于 2013-05-07T01:43:05.213 回答
6

好像,你想用 lein 安装一个库。这是插件,安装它并使用

 lein localrepo install <filename> <[groupId/]artifactId> <version>
于 2013-05-06T08:27:11.030 回答
4

Java 和 Clojure通常没有全局安装库的想法。您应该始终使用最少的依赖项创建一个类路径。您需要以某种方式指定和管理这个类路径,最简单的方法是使用 leiningen,这需要一个项目。

leiningen 自动化了检索远程库并将它们放置在本地存储库中的过程,这有点类似于 gem install,但是这些库不会自动对 REPL 可用。

让一组库始终可用的最简单方法是在开始新项目之前拥有一个用于 REPL 实验的“临时”项目。这不是太多的开销。

于 2013-05-06T10:04:40.213 回答
4

在 lein 2 中,您可以使用要安装的软件包更新 profiles.clj:

~\user\.lein\profiles.clj

使用 lein 首次运行任何项目时,本地 repo 将使用profiles.clj 中增加的内容进行更新。

有时我只是在项目文件夹中运行 lein deps,这将为您更新本地存储库。

这样,您可以将任何库添加到您的 project.clj 或从 repl 调用它,它将从本地 repo 中提取。

于 2013-05-06T22:18:45.227 回答
0

如果您没有项目,则将您的依赖项添加到您的全局 lein 用户配置文件中,而不是位于 ~/.lein/profiles.clj.

老实说,该文档对 lein 来说并不好。所以这部分很混乱。但是您像这样编辑该文件:

{:user {:plugins [[lein-pprint "1.1.1"]]
 :dependencies [[slamhound "1.3.1"]]}} 

在 :plugins 向量中添加您想要的任何全局 lein 插件。在 :dependencies 向量中,您可以添加您希望在全球范围内可用的任何库。

然后,无论您从哪里开始, lein repl 您都可以使用这些依赖项。在您运行的任何地方, lein 您都可以使用额外的插件功能。

如果您使用 tools.deps 而不是 lein,也就是 clj 命令而不是 lein 命令。然后就有点不一样了。相反,您想修改您的 ~/.clojure/deps.edn 文件。您将在那里添加依赖项的地方:

{:deps {clj-time {:mvn/version "0.14.2"}}}

因此,如果您在运行 clj 命令时将上述内容放在用户 deps.edn 中,那么您将可以使用 clj-time 库。

于 2020-03-26T06:28:55.703 回答