我有多个单独的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编译过程。
这可能在莱宁根?我该怎么设置呢?
答案 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。即便如此,这也是一个方便的技巧。