2011-12-01 99 views
19

我有多个单独的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 bleeding edge(提交新提交/创建我自己的提交),而不必运行lein jar或lein deps,并且如果我更改任何项目,肯定不必重新启动VM。

这里的一个用例:

运行LEIN自吹,从emacs的内后,我连接到REPL和编译从mywebapp一个文件(带有C-C-K),这需要从黑色的文件。它在我的项目目录中找到该文件的版本。之后,我打开该文件,编辑它并编译它(使用C-c-k)。

请注意,我不会要求自动编译时,我做混帐拉。我只是不想重新启动JVM或做冗长的jar编译过程。

这在leiningen可能吗?我如何设置?

回答

17

这个问题从Lein FAQ帮助?

Q:我想破解并行的两个项目,但它很烦人它们之间进行切换。

A:使用称为检出依赖项的功能。如果您在项目根目录中创建一个名为checkouts的目录,并将其他一些 项目根插入其中,Leiningen将允许您在 平行线中对它们进行破解。这意味着依赖关系的变化将在 主项目中可见,而无需通过整个 install/switch-projects/deps/restart-repl循环。请注意,这不是 列出项目的替代项:依赖项;它只是 补充说明为更紧密的更改周期。

+0

谢谢!我一定错过了FAQ。 –

+1

非常有用。该信息应该在主文档中。 – Glen

3

如果您已经在使用swank,则不需要lein checkout依赖项。你可以只用C-C C -K你的项目(它会加载黑白版本的任何东西),然后浏览到你的本地版本noir和C-c C-k。 Swank愉快地把所有的代码发送给你的repl,并且jvm从不需要知道它来自不同的地方!

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

相关问题