如果要为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
作为默认启动任务包括在内?
答案 0 :(得分:0)
您已将答案联系起来。
repl任务与大多数其他任务不同,因为nREPL 服务器无法在一个pod中运行(因为你想在一个pod中运行一个REPL 项目上下文,而不是新的pod上下文)。所以repl任务调用 设置ENV!本身在运行时添加其nREPL依赖项 实际使用,并且当repl时项目没有nREPL依赖 任务没有使用。
这意味着上述方法不会获取依赖项 需要启动REPL。这可能是构建Docker时的一个问题 例如,图像。解决方案是做这样的事情:
(deftask deps [](repl:server true))
如果您明确告诉boot您要使用nREPL,则会下载所有必需的依赖项。链接部分还描述了如何完成此操作。
所以repl任务调用set-env!本身在实际使用时在运行时添加其nREPL依赖项,
这种情况独立于您的依赖项,因为您的应用程序可能没有任何其他依赖项。