你能从本地检查出来的源码中获得leiningen加载库代码吗?

时间:2013-07-25 02:34:45

标签: clojure leiningen

假设我正在攻击我在项目中使用的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,这样当我对代码进行更改时,他们会在运行时看到它们?

1 个答案:

答案 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中包含一个内置版本。