【问题标题】:Can Leiningen recursively download the dependencies of its checkout dependencies?Leiningen 可以递归下载其结帐依赖项的依赖项吗?
【发布时间】:2016-07-19 04:17:30
【问题描述】:

Checkout dependencies 可用于在开发期间将另一个正在进行的项目添加到您的 Leiningen 项目(例如:您正在并行开发应用程序和底层库)。

但是,当结帐依赖项本身具有“传统”依赖项(来自 Clojars)时,在父项目中运行 lein run 将抛出 java.io.FileNotFoundException,因为它显然不会检索其结帐依赖项的“传统”依赖项.

有没有办法让 Leiningen 项目递归下载其结帐依赖项的依赖项?

【问题讨论】:

  • 一种解决方法是将依赖项列表从 checkout 依赖项的 project.cli 复制到其父项目的列表中,但这不是 DRY 并且随着依赖项的更改容易不同步。
  • 在 IRC 上,我被告知要走的路是将您的库作为依赖项添加到父项目中。但是,这似乎不是最理想的,因为已发布的版本可能具有除本地版本之外的其他依赖项...

标签: clojure dependencies leiningen clojars


【解决方案1】:

我认为这样做的“正确”方法是让您的项目除了将其放在您的 checkouts 目录中之外,还作为传统依赖项依赖您的 checkouts 目录中的库。

然后每次更改依赖项时,在库项目中运行 lein install。这将导致 lein 生成适当的 jar 文件并将其安装到本地 maven 存储库中。这个库项目是否完成并不重要,因为您实际上并没有在这种状态下运行它,只是使用它来获取依赖项。

然后,当它运行时,除了删除结帐目录之外,您无需执行任何“切换到生产”的操作。依赖项已经在依赖项目中。

使用签出处理库有一个副作用,即代码被加载了两次。一次来自“依赖”版本,然后再次来自“结帐版本”。当我使用协议并且必须记住重新加载协议定义时,这对我来说是一个非常偶然的问题。

【讨论】:

    猜你喜欢
    • 2014-08-03
    • 2013-04-23
    • 1970-01-01
    • 2013-07-20
    • 2012-07-07
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    相关资源
    最近更新 更多