我正在使用lein 2.0
如果是主要应用程序
(defproject rexfer "1.0.1-SNAPSHOT"
:description "Filters standard report from Patriot Properties' AssessPro."
:dependencies [[org.clojure/clojure "1.4.0"]
[org.clojure/tools.cli "0.2.2"]
[org.clojure/data.csv "0.1.2"]
[rexfer-csv "1.0.0-SNAPSHOT"]
[util "1.0.7-SNAPSHOT"]]
:omit-source true
:main rexfer.core)
取决于库(util 1.07-SNAPSHOT)
(defproject util "1.0.7-SNAPSHOT"
:description "A general purpose Clojure library"
:dependencies [[org.clojure/clojure "1.4.0"]
[clojure-csv/clojure-csv "1.3.2"]
[org.clojure/data.csv "0.1.2"]]
:aot [util.core]
:omit-source true)
是获取.jar文件或独立.jar?
的引用提出这个问题的另一种方法是我应该为像
这样的库构建独立的jar util "1.0.7-SNAPSHOT"
需要主应用程序才能使用它们吗?
答案 0 :(得分:2)
您应该部署由lein jar
而不是lein uberjar
生成的jar。您还可以安全地期望以这种方式部署所有合理的库。
这大致是因为以下原因:
正确准备的jar包含有关其依赖项的元数据,因此用户将知道与jar一起获取依赖项;
经常会发生项目使用多个共享公共依赖项的库 - 将每个共享依赖项复制到几个jar中会很浪费;
用户可能有充分的理由覆盖您的一些依赖选择(这种情况一直发生,顺便说一下;用不同的版本替换传递依赖或者排除传递依赖是很常见的) - 使用常规的jar他们将能够轻松地做到这一点,而对于überjar来说会很痛苦。
当然,如果你的某些依赖关系的坐标恰好指向überjars,那最终会被Leiningen拉进去。我从来没有遇到像这样错误部署的图书馆。
答案 1 :(得分:0)
如果你不想运行lein uberjar,那么第二个问题的答案就是肯定的。这些jar需要在类路径上可用,以便运行主应用程序。 lein uberjar
的工作是包括依赖项的所有依赖项和依赖项等。