我有一个用于离线 Clojure 项目的用例。我想包含一个捆绑的依赖(在这种情况下是修改过的 Oz 版本,以便离线工作,因此不会获取 JS 依赖)。结果是包含 Oz 所需所有内容的 uberjar。我想从 clj CLI 工具中操作它。我遵循了指南中的说明,并在与 uberjar 相同的位置有一个最小的 deps.edn
{:deps {metasoarous/oz {:local/root "./oz.jar"}}}
在我的理解中,这应该(大致上)等同于调用
java -cp oz.jar clojure.main
没有对 deps.edn 进行任何额外更改,启动 clj 将尝试解决依赖(例如 clojurescript),这是我不想要(实际上,由于网络设置,它们将失败)。
有没有规定的方法可以将 uberjar 只是视作一个哑本地依赖,而不激活 higher order dependency resolution 机制?我想利用 deps.edn 中的选项(例如设置源路径等),只是在一堆预先加载到 uber.jar 中的库(可能是在有限的环境中需要的所有依赖项)
另一种选择(我想)是将它安装到本地的 .m2 并将其视为 Maven 坐标,这样可以(希望)阻止 clj 试图在线嗅探依赖项。
我希望本地 jar 方法可以工作。