leiningen uberjar - 在运行时添加外部jar

时间:2016-09-03 13:59:45

标签: clojure leiningen uberjar

我正在尝试在制作leiningen uberjar时如何在类路径中添加目录和外部jar。

原因是我需要分发一个jar,但是由于许可限制,一些依赖项(例如jdbc驱动程序)无法编译到uberjar中。

我还想提供某些外部资源,例如jar外部的日志记录和配置属性。

通常在java或spring boot中,我会使用适当的命令行选项来更改类路径。但是-cp没有找到jar等

有没有办法做这个或适当的插件? 提前致谢

1 个答案:

答案 0 :(得分:1)

您可以将jar作为资源添加到:dev配置文件中。然后将它添加到类路径中。 dev配置文件用于本地开发,而不是打包到uberjar中。

:profiles {
         :uberjar {:aot :all}
         :dev {:resource-paths ["no-redist/commercial-jdbc-driver.jar"]}}

生产'你需要的uberjar时间然后手动设置类路径:

java -cp no-redist/commercial-jdbc-driver.jar;your-app-uber-jar.jar main.namespace

Afaik在使用-jar标志时,它使用jar文件中的依赖项,无论在那里链接和引用的是什么。组合-cp和-jar可能不起作用。

另一种方法是在jar清单(META-INF / MANIFEST.MF)中引用无可分发的jar文件:

Class-Path: no-redist/commercial-jdbc-driver.jar

java -jar your-app-uber-jar.jar将在本地目录中的no-redist / commercial-jdbc-driver.jar文件夹中查找jar。在leinigen中添加如下:

:manifest {"Class-Path" "no-redist/commercial-jdbc-driver.jar"}
相关问题