Clojure / Leiningen - 将罐子资源打包到clojars中



我有一个类似于将第三方jar部署到clojar的问题?

我使用 lein deploy 将一个小项目推入 clojars 中。该项目依赖于一个 jar 依赖项,我只是将其放在本地驱动器上的文件夹中并导入到我的:resource-paths中,如下所示:

(defproject cljblpapiwrapper "0.1.0-SNAPSHOT"
  :description ""
  :url ""
  :license {:name "" :url ""}
  :dependencies [[org.clojure/clojure "1.9.0"]]
  :resource-paths ["resources/blpapi-3.8.8-2.jar"]
  :repl-options {:init-ns cljblpapiwrapper.core})

现在,在另一个项目中导入我部署的 clojars 存储库时,它无法在 jar 存储库中找到类。我得到这个痕迹:

#error {
 :cause com.bloomberglp.blpapi.CorrelationID
 :via
 [{:type clojure.lang.Compiler$CompilerException
   :message java.lang.ClassNotFoundException: com.bloomberglp.blpapi.CorrelationID, compiling:(cljblpapiwrapper/core.clj:6:1)
   :at [clojure.lang.Compiler load Compiler.java 7526]}
  {:type java.lang.ClassNotFoundException
   :message com.bloomberglp.blpapi.CorrelationID
   :at [java.net.URLClassLoader findClass URLClassLoader.java 382]}]
 :trace
 [[java.net.URLClassLoader findClass URLClassLoader.java 382]
  [clojure.lang.DynamicClassLoader findClass DynamicClassLoader.java 69]
  [java.lang.ClassLoader loadClass ClassLoader.java 424]
  [clojure.lang.DynamicClassLoader loadClass DynamicClassLoader.java 77]
  [java.lang.ClassLoader loadClass ClassLoader.java 357]
...

在我看来,罐子没有进入 clojars - 我如何在我的存储库中打包它?或者,我怎样才能把它单独推到clojars?

谢谢

您是否尝试从clojars下载库?使用 jar 命令解压缩 *.jar 文件,并查看库是否存在。

看看这个回购: https://github.com/cloojure/tupelo-datomic

./resources目录中有一个jar文件:datomic-free-0.9.5661-everything.jar

您可能需要在project.clj中尝试语法,以使clojar上的uberjar正确形成。 您可能需要在单独的 maven 兼容存储库上发布依赖项 JAR 文件。选项包括:

  • Deps.co - 由 REPL 播客主持人创建
  • AWS S3 - 有一个 lein 插件可以帮助解决这个问题

我认为您需要将 jar 绑定为依赖项 project.clj,资源路径告诉 uber jar 只包含该文件。

最新更新