lein uberjar不会将资源下的jar文件打包到最终的jar中

时间:2016-05-10 14:01:38

标签: clojure leiningen

我定义了:profile.clj中的resource-paths包含一些特殊的jar(vertica jdbc)文件。然后我运行lein uberjar:尝试将该jar文件打包到独立的jar文件中,但是在我运行它并解压缩之后,我找不到vertica jdbc文件。

2 个答案:

答案 0 :(得分:5)

Leiningen可以创建jar文件,但它唯一可以从中获取的是maven存储库(在您计算机上的.m2目录下)。一旦您的特殊jar 在maven中,您需要将其称为project.clj文件中的依赖项。

如果您的jar文件在clojars中,这将非常简单 - 只需放入依赖项 - lein会将其提取到您的maven存储库中。另一方面,如果它是您自己的源代码,您首先需要从该源代码项目的目录中lein install

但是我猜你的文件只是一个jar文件,这不是clojars中的工件。在这种情况下,您可以使用此maven命令将其安装到您的maven存储库中(此处假设my-deps.jar是您的文件):

mvn install:install-file -Dfile=./my-deps.jar -DgroupId=my-deps -DartifactId=my-deps -Dversion=1.0.0 -Dpackaging=jar

然后,您可以将其称为 uberjar项目中的依赖项,然后lein uberjar

编辑 - 如果您不想使用原始maven命令,请考虑使用此leiningen库为您摘录它们:https://github.com/kumarshantanu/lein-localrepo

答案 1 :(得分:3)

另一种方法是添加到project.clj:

:repositories {"local" "file:lib"}

在项目中创建一个lib目录并在那里添加jar。

:dependencies中的project.clj标记中添加lib引用。

此lib目录与.m2/repository具有相同的结构,但它位于项目内部并且是项目的本地目录