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

18

我正在学习Clojure语言,原本使用Ruby。

现在我在寻找类似于“gem install <library>”的安装方式。但是,各种不同的“lein install”命令好像不太符合我的需求。

有没有一种方法可以简单地将库安装在本地,这样就可以在REPL中引用该库,而无需创建项目呢?

5个回答

6

看起来,您想使用lein安装一个库。这里是插件,安装它并像下面这样使用:

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

6
如果你的目的仅仅是在REPL中加载库,请考虑使用alembic。它可以动态加载类路径,解决依赖问题,并从存储库自动拉取库。
以下是一个用例:
(require 'alembic.still)
(alembic.still/distill '[enlive "1.1.1"])

只需在您的.lein/project.clj中添加以下条目即可:
{:dev {:dependencies [[alembic "0.1.1"]]}}

请参阅这个答案

4
Java和Clojure通常没有全局安装库的概念。您应该始终使用最小依赖项创建类路径。您需要以某种方式指定并管理此类路径,最简单的方法是使用Leiningen,它需要一个项目。
Leiningen自动化了检索远程库并将其放置在本地存储库中的过程,这在某种程度上类似于gem install,但这些库不会自动可用于REPL。
始终可用一组库的最简单方法是拥有一个“临时”项目,您可以在开始新项目之前在其中进行REPL实验。这并不是太麻烦。

4
在lein 2中,您可以更新profiles.clj以安装要安装的软件包:
~\user\.lein\profiles.clj

在使用lein运行任何项目时,本地repo将会通过profiles.clj文件进行更新。

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

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


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"}}}

因此,如果您将上述内容放入用户deps.edn中,每当运行clj命令时,clj-time库都将对您可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接