使用leiningen安装库而不创建项目

时间:2013-05-06 07:26:16

标签: clojure leiningen

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

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

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

5 个答案:

答案 0 :(得分:6)

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

 lein localrepo install <filename> <[groupId/]artifactId> <version>

答案 1 :(得分:6)

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

以下是一个用例:

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

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

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

请参阅this answer

答案 2 :(得分:4)

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

leiningen自动执行检索远程库并将它们放在本地存储库中的过程,这有点类似于gem安装,但这些库不会自动可用于REPL。

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

答案 3 :(得分:3)

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

~\user\.lein\profiles.clj

随着lein的任何项目的首次运行,本地仓库将更新为profiles.clj中的内容。

有时我只是在没有项目文件夹的情况下运行lein deps,这将为您更新本地仓库。

通过这种方式,您可以将任何库添加到project.clj或从repl调用它,它将从本地存储库中提取。

答案 4 :(得分:0)

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

老实说,这份文件对莱恩来说并不适合。因此,这部分令人困惑。但是您可以这样编辑该文件:

{: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库就可以使用。