【问题标题】:Getting Leiningen to download dependencies outside of a project让 Leiningen 下载项目外部的依赖项
【发布时间】:2013-04-23 20:55:43
【问题描述】:

我正在学习 Clojure,但我并没有真正为每个小代码 sn-p 构建整个项目,我只是将它们放入 REPL。有时我正在探索的代码 sn-ps 需要一个依赖项(通常是/曾经在 clojure.contrib 中的东西)。

我知道如何将这些依赖项放到我的计算机上的唯一方法是创建一个空的 leiningen 项目,将依赖项添加到 project.clj 并运行 lein deps

有什么方法可以在项目之外全局下载库?如果是我真的真的不想,为什么?

【问题讨论】:

  • 1) 下载库 jar 2) java -cp clojure.jar:some-lib-clj.jar clojure.main 3) 有一个从头开始的 Leiningen 项目有什么不好?
  • 这不是你想要的,但也许这会更容易,github.com/mtyaka/lein-oneoff
  • 在我看来,这正是他想要的。

标签: clojure leiningen


【解决方案1】:

如果您使用 lein-exec 作为运行一次性脚本的方式,您现在可以在脚本顶部使用一点 sn-p。添加:

(use '[leiningen.exec :only (deps)])
(deps '[[clj-time "0.8.0"]])

到您的 clj 顶部。现在运行lein exec [example.clj]会自动拉下需求。

如果您是 lein exec 的新手,只需将 {:user {:plugins [[lein-exec "0.3.4"]]}} 添加到您的 ~/.lein/profiles.clj 即可开始在您的 clj 文件上运行 lein exec。这是在没有项目的情况下运行代码的好方法。

【讨论】:

    【解决方案2】:

    试试lein-try。这是我编写的一个 leiningen 插件,它可以让你在命令行中说出类似 lein try [my-dependency 1.0.0] 甚至 lein try my-dependency 的内容,然后放入具有可用依赖项的 REPL。

    【讨论】:

      【解决方案3】:

      我有一个小项目,用于测试代码 sn-ps 和回答 SO 问题,并且还在不断添加依赖项。该项目的 project.clj 包含 Pomegranate 作为依赖项,这使得动态加载其他依赖项变得如此简单:

      (use '[cemerick.pomegranate :only (add-dependencies)])
      (add-dependencies :coordinates '[[my-dependency "1.2.3"]])
      

      【讨论】:

        猜你喜欢
        • 2016-07-19
        • 2013-05-10
        • 2012-07-07
        • 2016-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多