【问题标题】:How to use lein to manage the dependency of a dependency?如何使用 lein 管理依赖项的依赖关系?
【发布时间】:2012-05-17 15:24:50
【问题描述】:

我应该创建一个本地存储库来更改项目中依赖项的依赖关系吗?

我有一个使用 docjure 的 clojure 项目。 docjure 包含对 poi 3.6 的依赖。

由于我正在阅读生成的 Excel 文件中的错误,我有一个本地版本的 poi 3.8,我破解了该错误以解决该错误。

将我的 poi 3.8 jar 粘贴到我的项目 lib/ 目录中很容易,这样我的项目就可以在 repl 上运行。

但是,lein deps(或 jar 和 uberjar)愉快地清理了 lib/ 目录并重新安装了 poi 的 3.6 版本,破坏了我的构建。

我认为可能的解决方案有两个:

1 - 将我破解的 poi 3.8 放入本地存储库 2 - 创建我自己的 docjure 本地副本并更新它的依赖项以指向该本地存储库。

我正在寻找确认在这种情况下这是“正确的事情”,或者有人指出做其他事情要容易得多。

【问题讨论】:

    标签: clojure leiningen


    【解决方案1】:

    如果您还没有阅读 Leiningen 的 Repeatability wiki 页面,那么值得一读。引用其中的一部分:

    如果代码是公开的,您应该向上游打开一个错误报告,让他们根据项目将其发布到 Clojars、Sonatype 或 Maven Central 等公共存储库中。如果他们有抵抗力或太慢,总是可以发布“Clojars forks”;有关详细信息,请参阅 lein help deploying。

    最终的解决方案是尝试将您的更改推送到上游。然后你可以依赖于你需要的版本,我认为如果它比传递版本更高,Leiningen 会更喜欢那个版本。


    另一个选项可能是将您的 jar 包含在安全(签入)目录中。然后写一个可以hook into a built-in task的插件,并为你把jar复制到你的lib目录下。我真的不知道这是否会成功,但值得研究。

    【讨论】:

    • 感谢 Jeremy 指向可重复性页面的指针。我在 poi 中实施的 hack 删除了(正确检测到的)异常条件。根本问题是 Excel 文件的内部格式不正确。 poi 阅读器正确检测到这种特定情况。所以它不是真正的修复,而是一个糟糕的解决方法。
    • 我可能会尝试插件钩子,只是因为它看起来很时髦。感谢您的链接。最终,出于支持/维护的原因,我可能会创建一个本地存储库。
    猜你喜欢
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2022-10-12
    相关资源
    最近更新 更多