我正在尝试在制作leiningen uberjar时如何在类路径中添加目录和外部jar。
原因是我需要分发一个jar,但是由于许可限制,一些依赖项(例如jdbc驱动程序)无法编译到uberjar中。
我还想提供某些外部资源,例如jar外部的日志记录和配置属性。
通常在java或spring boot中,我会使用适当的命令行选项来更改类路径。但是-cp没有找到jar等
有没有办法做这个或适当的插件? 提前致谢
答案 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"}