2024年Clojure调查问卷 中分享您的想法!

欢迎!有关本站工作原理的更多信息,请参阅关于 页面。

+2
tools.deps

我有一个离线Clojure项目的用例。我想包含一个捆绑的依赖项(在这种情况下是一个我修改过的Oz版本,以便离线使用,不会检索js依赖项)。结果是包含Oz所需所有内容的uberjar。我想用它通过与clj CLI工具一起进行操作。我按照指南的说明执行操作,并将最小化的deps.edn与uberjar共存

{:deps {metasoarous/oz {:local/root "./oz.jar"}}}

在我看来,这应该(或多或少)等同于调用
java -cp oz.jar clojure.main

没有对deps.edn进行任何额外更改,启动clj将尝试解决依赖项(例如,对于clojurescript),而这正是我不想要的(事实上,由于网络设置,它们将会失败)。

是否有规定的方法来将uberjar视为哑本地依赖项,而不触发高级依赖项解析机制?我希望利用deps.edn中的选项(例如,设置源路径等),只需预先在uber.jar中加载一大堆库(可能是我在一个有限环境中需要的所有依赖项)。

另一个选项(我想)是将它安装到本地的.m2中,将其视为maven坐标,这应该(希望)阻止clj尝试在线嗅探依赖项。
我希望本地jar方法能够被实现。

1 个回答

+1

目前clj没有“离线”模式,并且jar依赖项会被检查,jar内部的pom文件,以及根据该pom文件检索依赖项。我想如果您制作了一个不包含内部pom的uberjar,这可能足够了。

为什么你不直接使用java -cp oz.jar clojure.main呢?据我所知,在这个情况下,clj并没有为其提供任何额外的价值。

...