如何使用lein-localrepo插件为Leiningen项目配置本地存储库依赖项?

时间:2013-08-27 03:19:39

标签: clojure dependencies leiningen

我有一个名为 Parallel 的Clojure项目,取决于另一个名为 Messaging 的Clojure项目,我使用lein jar命令生成 messaging-0.1 .0-SNAPSHOT.jar 文件,然后我按照页面https://github.com/kumarshantanu/lein-localrepo上的说明尝试将本地jar依赖项添加到 Parallel 项目。
首先,我在 Parallel 项目的根目录下创建了一个名为 lib 的目录。然后,我使用命令lein localrepo coords messaging-0.1.0-SNAPSHOT.jar | xargs lein localrepo install -r lib将消息传递库安装到本地存储库 lib 。第三,我将依赖项添加到 Parallel 项目的project.clj文件中,如下所示:

(defproject parallel "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [...]
                 [messaging "0.1.0-SNAPSHOT"]]
  :plugins [[lein-localrepo "0.5.2"]]
  :repositories {"local" ~(str (.toURI (java.io.File. "lib")))})

但是,最后,当我运行lein deps时,出现以下错误:

Retrieving messaging/messaging/0.1.0-SNAPSHOT/messaging-0.1.0-SNAPSHOT.pom from local
Could not transfer artifact messaging:messaging:pom:0.1.0-SNAPSHOT from/to local (file:/home/mixi/Workspace/Projects/clojure/parallel/lib/): no supported algorithms found
This could be due to a typo in :dependencies or network issues.

我无法弄清楚原因。我对这个问题进行了一些研究,比如Using local jars with LeiningenHow do you configure proprietary dependencies for Leiningen?,但我仍然找不到出路。

那么正确的方法是什么?

2 个答案:

答案 0 :(得分:2)

groupId添加到messaging项目,运行lein install,修改dependencies。 不需要:repositories,从〜/ .m2存储库中获取文件。

答案 1 :(得分:0)

当您在:repositories中提及project.clj时,它表示从中下载工件的网址。要使用:local-repo指定本地存储库。请参阅此处:https://github.com/technomancy/leiningen/blob/master/sample.project.clj并搜索:local-repo