Clojure / Leiningen - 将 jar 资源打包到 clojars 中
Clojure / Leiningen - package jar resource into clojars
我有一个类似于 Deploy 3rd-party jar to clojars?
的问题
我已经使用 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]
...
在我看来,jar 没有进入 clojars - 我如何将它打包到我的 repo 中?或者,如何将它单独推送到 clojars?
谢谢,
您是否尝试从 clojars 下载您的库?使用jar
命令解压*.jar文件,查看lib是否存在
查看此存储库:https://github.com/cloojure/tupelo-datomic
在 ./resources
目录中有一个 jar 文件:datomic-free-0.9.5661-everything.jar
您可能需要尝试使用 project.clj
中的语法以使 clojars 上的 uberjar 格式正确。您可能需要将依赖项 JAR 文件发布到单独的 maven 兼容存储库中。选项包括:
- Deps.co - 由 The REPL 播客的主持人创建
- AWS S3 - a lein plugin 可以帮助解决这个问题
我认为您需要将 jar 绑定为 project.clj 中的依赖项,资源路径告诉 uber jar 只包含该文件。
我有一个类似于 Deploy 3rd-party jar to clojars?
的问题我已经使用 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]
...
在我看来,jar 没有进入 clojars - 我如何将它打包到我的 repo 中?或者,如何将它单独推送到 clojars?
谢谢,
您是否尝试从 clojars 下载您的库?使用jar
命令解压*.jar文件,查看lib是否存在
查看此存储库:https://github.com/cloojure/tupelo-datomic
在 ./resources
目录中有一个 jar 文件:datomic-free-0.9.5661-everything.jar
您可能需要尝试使用 project.clj
中的语法以使 clojars 上的 uberjar 格式正确。您可能需要将依赖项 JAR 文件发布到单独的 maven 兼容存储库中。选项包括:
- Deps.co - 由 The REPL 播客的主持人创建
- AWS S3 - a lein plugin 可以帮助解决这个问题
我认为您需要将 jar 绑定为 project.clj 中的依赖项,资源路径告诉 uber jar 只包含该文件。