clojure和leiningen - 使用git存储库作为依赖

Tob*_*ede 35 git github clojure dependency-management leiningen

是否有可能让leiningen直接从git存储库(在github上)作为依赖项拉出项目?

使用Bundler和Ruby,可以将gem映射到git repo,从而允许快速开发和集成依赖项目.

更新

根据公认的答案,现在有一个用于管理git-deps的leiningen插件:https: //github.com/tobyhede/lein-git-deps

Nin*_*Sun 22

我刚在clojurescriptone的project.clj中找到了这个

我想这对你有帮助:

:git-dependencies [["https://github.com/clojure/clojurescript.git"
                       "886d8dc81812962d30a741d6d05ce9d90975160f"]
                   ["https://github.com/levand/domina.git"
                       "8933b2d12c44832c9bfaecf457a1bc5db251a774"]]
Run Code Online (Sandbox Code Playgroud)

该文件在这里.

  • 很酷,谢谢.在将其提取到lein插件的过程中,但有一些问题(我第一次尝试插件):https://github.com/tobyhede/lein-git-deps.会保持你的发布,让你知道它是否有效. (4认同)
  • 很酷,+ 1!请注意,这不是内置于Leiningen的 - 它由作为ClojureScript One源代码树的一部分分发的Leiningen插件处理.这并不是说这个解决方案有什么问题,只需要从cljs中提取该插件就可以使用它.也许它会在某个时候单独出版.(或许它已经存在了?我之前从未注意过,所以我真的不确定......) (3认同)
  • 请注意,您仍需要跟踪:extra-classpath-dirs才能使用它.理想情况下,你会有一个插件可以检查所有依赖项的所有poms并找到<scm>元素,它可以自动为那些已经列为:project.clj中的依赖项的东西添加checkout依赖项.如果您使用大量的git依赖项,这样的插件将非常容易编写. (3认同)

Mic*_*zyk 10

Leiningen不会为你拉扯(编辑:不是开箱即用的;依照Sunng的回答引导人们发现已经为此写了一个插件 - 请参阅我对该答案的评论;结帐deps仍然是一个很好的内置解决方案),但您可以检查其他项目放在类路径上.此功能在README的FAQ部分中描述; 这是相关的问答:

问:我想并行攻击两个项目,但在它们之间切换很烦人.
答:如果您创建一个checkouts在项目根目录中调用的目录,并且符号链接其他一些项目,Leiningen将允许您并行攻击它们.这意味着依赖项的更改将在主项目中可见,而无需完成整个install/switch-projects/deps/restart-repl循环,并且副本 checkouts将优先于project.clj中声明的依赖项.请注意,这不是列出项目的替代品:dependencies; 它只是为了方便补充.


Dao*_*Wen 5

2017 年答案:使用lein-voom

您可以使用lein-voom从 GitHub 或其他 Git 存储库提取和构建项目依赖项。它的工作原理是让您使用voom特定的元数据来注释依赖向量对条目。这是自述文件中的示例:

^{:voom {:repo "https://github.com/ring-clojure/ring" :branch "1.3"}}
[ring/ring-core "1.3.0-RC1-20140519_142204-gaf0379b"]
Run Code Online (Sandbox Code Playgroud)

voom的主要用例是允许在单独的 Git 存储库中维护多个 Clojure 项目的团队轻松依赖另一个项目的一个或多个项目的当前版本,而无需不断部署开发快照版本。

我更喜欢lein-voom而不是lein-git-deps(2012 年之前接受的答案中推荐的插件),原因如下:

  1. 事实上,规范是通过元数据给出的,使得这个插件更加灵活且易于扩展。它已经有一个用于指定存储库的特定分支/标签的选项。您可以将其他键/值对添加到映射中,以进行额外的细粒度控制,而无需做太多工作。

  2. 您只需从稳定版本的依赖条目中删除元数据即可;也就是说,一旦您的依赖项从 GitHub 转移到 Clojars 中,就无需移动条目/重构您的条目project.clj

  3. 截至撰写本文时(2017 年 11 月),lein-voom在过去几个月内进行了更新,而lein-git-deps已经停滞了 4 年。