14

假设我正在破解我在项目中使用的 clojure 库:

/User/SCdF/Code/myproject/
/User/SCdF/Code/other-peoples-projects/clojure-library-cloned-from-github

目前,当我进行更改时,clojure-library-cloned-from-github我会运行lein install将我的新版本推送到本地存储库(我已经将我的和它们更改project.clj为指向更新-SNAPSHOT版本的库,因此每次都会更新),然后重新启动/lein deps运行myproject.

有没有一种方法可以告诉 leiningen 查找../../clojure-library-cloned-from-github库的源代码,而不是使用 maven 和 jar,这样当我对代码进行更改时,它们会在运行时看到?

4

1 回答 1

18

查看 Leiningens签出依赖项功能。

基本上,您在当前项目的名为“checkouts”的子目录中创建一个指向库目录的符号链接,并将其添加到您的 Leiningen 配置文件中。现在,每当您的程序从 Leiningen 启动(REPL,运行)时,该项目也会被加载。

如果您在 Windows 上,而不是创建符号链接,您需要使 NTFS 等效于指向目录的符号链接,称为“连接点”。

如果您的项目实际上不是通过 Leiningen 启动的(例如在 Eclipse/CounterClockWise 中),请注意这不起作用。如果从 CounterClockWise 运行,则需要将所需的库添加为 Eclipse 项目,然后编辑您自己项目的 Eclipse 项目属性:在 Java Build Path > Projects 下,添加库项目。

现在,如果您从 Eclipse REPL 开始,该库将包含在 java 类路径中。但是,如果您希望项目在通过 Leiningen 运行时也能正常工作,您还需要使用结帐功能。

当然,每当你想为你的程序做一个独立的构建时,签出方式将不再起作用,你需要将库作为正常的依赖项包含在内,或者在你的 uberjar 中包含一个构建版本。

于 2013-07-25T11:06:53.287 回答