【发布时间】:2013-05-06 07:26:15
【问题描述】:
我正在学习 Clojure,并且具有 Ruby 背景。
我正在寻找类似于gem install <library> 的东西。 lein install 的各种咒语似乎不符合这个要求。
有没有办法简单地在本地安装一个库,以便在 REPL 中引用它而不需要创建项目?
【问题讨论】:
我正在学习 Clojure,并且具有 Ruby 背景。
我正在寻找类似于gem install <library> 的东西。 lein install 的各种咒语似乎不符合这个要求。
有没有办法简单地在本地安装一个库,以便在 REPL 中引用它而不需要创建项目?
【问题讨论】:
看起来,你想用 lein 安装一个库。这里是plugin,安装使用就好
lein localrepo install <filename> <[groupId/]artifactId> <version>
【讨论】:
如果您的目标只是在 REPL 中加载库,请考虑使用 alembic。它动态加载类路径、解析依赖关系并自动从存储库中提取库。
这是一个用例:
(require 'alembic.still)
(alembic.still/distill '[enlive "1.1.1"])
它只需要您将以下条目添加到您的.lein/project.clj:
{:dev {:dependencies [[alembic "0.1.1"]]}}
【讨论】:
Java 和因此 clojure 不一般有全局安装库的想法。您应该始终使用最少的依赖项创建一个类路径。您需要以某种方式指定和管理这个类路径,最简单的方法是使用 leiningen,这需要一个项目。
leiningen 自动检索远程库并将它们放置在本地存储库中,这有点类似于 gem install,但这些库不会自动可供 REPL 使用。
让一组库始终可用的最简单方法是在开始新项目之前拥有一个用于 REPL 实验的“临时”项目。开销不算太大。
【讨论】:
在 lein 2 中,您可以使用要安装的软件包更新 profiles.clj:
~\user\.lein\profiles.clj
使用 lein 首次运行任何项目时,本地 repo 将使用profiles.clj 中增加的内容进行更新。
有时我只是在项目文件夹中运行 lein deps,这将为您更新本地 repo。
这样您可以将任何库添加到您的 project.clj 或从 repl 中调用它,它将从本地 repo 中提取。
【讨论】:
如果您没有项目,则将您的依赖项添加到您的全局 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 库。
【讨论】: