【发布时间】:2017-06-19 16:03:09
【问题描述】:
我有一个依赖于 Java 库的 clojure 项目,当它被包含在 uberjar 中时,它不起作用。 (它需要不同的 XML 描述符在不同的 JAR 文件中使用相同的文件名。)
我在 leiningen 中使用 Docker 时发现的一切都依赖于构建和打包一个 uberjar。这也是我迄今为止构建所有 clojure Docker 映像的方式。
是否有任何 leiningen 插件可以理解使用 io.fabric8/docker-maven-plugin 等多个 jar 文件打包 Docker 映像?
【问题讨论】:
-
uberjar 是独立于语言的。因此,您可以使用任何构建工具构建一个包含 Clojure 代码的代码。一般来说,我更喜欢 lein 而不是 SBT,但在创建 uberjars 方面,我使用 SBT 插件比使用 lein 插件更成功。例如,在您的情况下,github.com/marcuslonnberg/sbt-docker 可能会对您有所帮助。
-
@ChrisMurphy 感谢您的建议。我的问题是,我正在使用的库在重新打包到 uber-jar 时不起作用。我必须用原始 jar 文件打包我的容器,然后在启动应用程序时在类路径中引用这个 jar。当我手动执行此操作时,它可以工作。当我使用 docker-maven-plugin 打包时它也可以工作,因为这个插件不会重新打包 jar。 maven 的问题是,emacs/cider 不支持 maven。
标签: docker clojure leiningen uberjar