【问题标题】:How can I set up leiningen to work with multiple projects?如何设置 leiningen 以处理多个项目?
【发布时间】:2012-01-10 06:22:04
【问题描述】:

我有多个独立的 leiningen 项目,这些项目表面上可能相互依赖。

例子:

~/projects/mywebapp  (my own project)
~/projects/noir      (a clone of the github repo)
~/projects/clojureql (a clone of the github repo)

我想让它们同时编译到同一个 JVM 中。我想运行 git repos 最前沿(拉新提交/进行我自己的提交),而不必运行 lein jar 或 lein deps,如果我更改任何项目,当然也不必重新启动 VM。

这是一个用例:

在 emacs 中运行 lein swank 后,我连接到 repl 并从 mywebapp 编译一个文件(使用 C-c-k),这需要一个来自 noir 的文件。它在我的项目目录中找到文件的版本。后来,我打开那个文件,编辑它,然后编译它(用 C-c-k)。

请注意,当我执行 git pull 时,我并没有要求自动编译。我只是不想重新启动 JVM 或进行冗长的 jar 编译过程。

这在莱宁根是可能的吗?我该如何设置?

【问题讨论】:

    标签: clojure leiningen


    【解决方案1】:

    Lein FAQ 的这个问题有帮助吗?

    :我想同时破解两个项目,但是在它们之间切换很烦人。

    A:使用称为结帐依赖项的功能。如果您在项目根目录中创建一个名为 checkouts 的目录并符号链接其他一些 将其根植于其中,Leiningen 将允许您破解它们 平行线。这意味着依赖项的更改将在 主项目,无需通关 install/switch-projects/deps/restart-repl 循环。请注意,这不是 替代在 :dependencies 中列出项目;它只是 为更紧凑的变更周期提供补充。

    【讨论】:

    • 谢谢!我一定是在常见问题解答中错过了它。
    • 非常有用。该信息确实应该在主文档中。
    【解决方案2】:

    如果您已经在使用 swank,则不需要 lein checkout 依赖项。您可以只 C-c C-k 您的项目(这将加载 noir/whatever 的 jarred 版本),然后浏览到您的本地版本的 noir 和 C-c C-k 。 Swank 愉快地将所有代码发送到您的 repl,jvm 永远不需要知道它来自不同的地方!

    我只能推荐这个用于小的更改,因为我认为如果你编译 noir.core,它取决于(比如说)noir.internal,即使你编译本地版本,clojure 也会加载 noir.internal 的 jarred 版本noir.core 的。即便如此,总的来说这是一个方便的技巧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      相关资源
      最近更新 更多