目前 tools.deps 不支持包装它们自己的本地库的 JAR 文件。
chrisn@chrisn-dt:~/dev/tvm-clj/tvm/build$ clojure -Sdeps '{:deps {techascent/tech.opencv {:mvn/version "1.2"}}}'
Clojure 1.9.0
user=> (require '[tech.opencv :as opencv])
警告:已在命名空间 tech.datatype.base 中存在名为:#'clojure.core/cast,正在被:#'tech.datatype.base/cast 替换
警告:已在命名空间 tech.datatype 中存在名为:#'clojure.core/cast,正在被:#'tech.datatype/cast 替换
CompilerException java.lang.ClassNotFoundException: org.bytedeco.javacpp.opencv_core, 编译:(tech/opencv.clj:1:1)
这种形式通过 leiningen 和 java 可以正常工作。
以下是从 leinigen 代码中摘录的这部分来完成此事
https://github.com/technomancy/leiningen/blob/master/leiningen-core/src/leiningen/core/classpath.clj
许多 Java 软件都这样做
1. 如果可能,它们将尝试从系统中加载库。
2. 如果失败,它们将提取 JAR 文件中包含的库到临时位置,并尝试加载。
我认为这是最好的途径,尽管它在 tools.deps 的范围之外;或许可以有一个伴侣库?