【问题标题】:Automating Leiningen local dependency management自动化 Leiningen 本地依赖管理
【发布时间】:2012-01-14 18:05:33
【问题描述】:

我正在使用本地 maven 存储库来存放我用于开发项目的一些代码。我在我的project.clj 文件中引用了这个存储库,现在我能够以这种方式依赖本地 jar(如何在我以前的question 中做到这一点)。

由于我正在积极开发这些项目,我有我的project.clj 文件来寻找LATEST 版本。但是,为了更新依赖项,我仍然需要增加该依赖项的版本号,然后运行 ​​lein install 将其构建到 maven 存储库。

当我构建依赖于 maven repo 的项目时,leiningen 是否有办法自动为我完成此操作? lein 可以只寻找那些东西并根据需要重建它们吗?

【问题讨论】:

  • 重复这个 [*.com/questions/5693621/…..?
  • 我在发帖之前确实看过这个问题。它给了我部分答案(使用“LATEST”作为我的版本字符串——实际上没有用,还不知道为什么)。但是,我更多地考虑的是 lein 自动获取本地项目的代码更改,甚至在使用时即时编译本地项目。

标签: maven clojure dependency-management leiningen


【解决方案1】:

如果您想并行开发两个项目,一个依赖另一个项目,您可以使用checkouts 目录中的符号链接,以避免一直安装快照。

引用Leiningen README

问:我想同时破解两个项目,但在它们之间切换很烦人。
答:使用称为结帐依赖项的功能。如果您在项目根目录中创建一个名为 checkouts 的目录并将其他一些项目根目录符号链接到其中,Leiningen 将允许您并行破解它们。这意味着依赖项的更改将在主项目中可见,而无需经历整个 install/switch-projects/deps/restart-repl 周期。请注意,这不能替代在 :dependencies; 中列出项目。它只是对更紧凑的变更周期的补充。

【讨论】:

  • 这看起来正是我所需要的。唯一的想法是我仍然不确定如何在项目文件中引用依赖项。我是否需要简单地使用"LATEST" 作为版本,然后它会在我下次运行项目时加载所有代码更改?这方面是如何工作的?
  • 对于任何对上述评论中我的问题感兴趣的人,@Christian Berg 会更详细地了解here。谢谢,克里斯蒂安!
  • 不客气!我不得不在 Leiningen 源代码中挖掘才能了解这一点......
【解决方案2】:

您的依赖项是版本快照吗? Maven 应该自动更新所有 *-SNAPSHOT 依赖项。

【讨论】: