这段代码如何最终拉出clojure启动的所有依赖项?

时间:2016-07-17 04:25:52

标签: clojure

如果要为boot Clojure项目提取所有依赖项,事实证明您可以将以下任务之一添加到build.boot文件中。

(deftask deps [])

(deftask deps [] (repl :server true))

后者还提到了here提到的repl依赖项。

我无法弄清楚为什么会这样。

为什么创建空体任务会导致任务拉出所有依赖项? (deftask z [] (comp (a) (b) (c))如何只提取a b c的依赖关系,但(deftask z [])会以某种方式拉动所有 build.boot中定义的任务的依赖关系?这是一件神奇的事吗?如果是这样,为什么不将deps作为默认启动任务包括在内?

1 个答案:

答案 0 :(得分:0)

您已将答案联系起来。

Repl Depencencies

  

repl任务与大多数其他任务不同,因为nREPL   服务器无法在一个pod中运行(因为你想在一个pod中运行一个REPL   项目上下文,而不是新的pod上下文)。所以repl任务调用   设置ENV!本身在运行时添加其nREPL依赖项   实际使用,并且当repl时项目没有nREPL依赖   任务没有使用。

     

这意味着上述方法不会获取依赖项   需要启动REPL。这可能是构建Docker时的一个问题   例如,图像。解决方案是做这样的事情:

     

(deftask deps [](repl:server true))

如果您明确告诉boot您要使用nREPL,则会下载所有必需的依赖项。链接部分还描述了如何完成此操作。

  

所以repl任务调用set-env!本身在实际使用时在运行时添加其nREPL依赖项,

这种情况独立于您的依赖项,因为您的应用程序可能没有任何其他依赖项。