如何设置leiningen以处理多个项目?

时间:2011-12-01 02:04:16

标签: clojure leiningen

我有多个单独的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。

这是一个用例:

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

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

这可能在莱宁根?我该怎么设置呢?

2 个答案:

答案 0 :(得分:17)

这个问题来自Lein FAQ帮助吗?

  

:我想并行攻击两个项目,但在它们之间切换很烦人。

     

A :使用名为checkout dependencies的功能。如果在项目根目录中创建一个名为checkouts的目录,则在其他方面创建符号链接   项目根植于它,Leiningen将允许你攻击他们   平行。这意味着依赖关系的变化将在   主要项目无需经过整体   install / switch-projects / deps / restart-repl cycle。请注意,事实并非如此   用于列出项目的替代品:依赖项;它很简单   补充那些更紧密的变化周期。

答案 1 :(得分:3)

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

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