2

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

我有一个使用 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 本地副本并更新它的依赖项以指向该本地存储库。

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

4

1 回答 1

3

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

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

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


另一种选择可能是将您的 jar 包含在安全(签入)目录中。然后编写一个可以挂钩到内置任务的插件,并为您将 jar 复制到您的 lib 目录。我真的不知道这是否会成功,但值得研究。

于 2012-05-17T15:35:06.183 回答