假设我正在攻击我在项目中使用的clojure库:
/用户/ SCDF /代码/ myproject的/
/用户/ SCDF /代码/其他的人民的项目/ Clojure的文库克隆从 - github上
目前,当我在clojure-library-cloned-from-github
中进行更改时,我会运行lein install
将我的新版本推送到本地存储库(我已将我和他们的project.clj
更改为指向更新版本库的-SNAPSHOT
版本,以便每次更新),然后在lein deps
上重新启动/运行myproject
。
有没有办法告诉leiningen在../../clojure-library-cloned-from-github
中查找库的源代码而不是使用maven和jar,这样当我对代码进行更改时,他们会在运行时看到它们?
答案 0 :(得分:18)
查看Leiningens checkout dependencies功能。
基本上,您在当前项目的名为“checkouts”的子目录中创建了一个指向库目录的符号链接,并将其添加到您的Leiningen配置文件中。现在,无论何时从Leiningen(REPL,run)启动程序,该程序都会被加载。
如果您使用的是Windows,而不是创建符号链接,则需要使NTFS等效于指向目录的符号链接,称为“junction point”。
如果您的项目实际上并未通过Leiningen启动(例如在Eclipse / CounterClockWise中),请注意这不起作用。如果从CounterClockWise运行,则需要将所需的库添加为Eclipse项目,然后编辑自己项目的Eclipse项目属性:在Java Build Path>项目,添加库项目。
现在,如果从Eclipse REPL开始,则库将包含在java类路径中。但是,如果您希望项目在通过Leiningen运行时也可以使用,则还需要使用结帐功能。
当然,每当你想要独立构建你的程序时,checkout方式将不再起作用,你需要将库作为普通依赖项包含在内,或者在你的uberjar中包含一个内置版本。