Leiningen:如何在uberjaring时排除依赖关系?

时间:2014-12-01 12:34:06

标签: jar clojure leiningen

使用leiningen构建Clojure应用程序时,在使用lein uberjar时,如何排除某些依赖项被包含在JAR文件中?

3 个答案:

答案 0 :(得分:4)

使用leiningen个人资料的provided条目。

 :profiles {:dev {:dependencies [[ring-mock "0.1.5"]
                                 [prismatic/dommy "0.1.3"]
                                 [org.bouncycastle/bcprov-jdk15on "1.50"]]}
            :provided {:dependencies [[org.bouncycastle/bcprov-jdk15on "1.50"]]}}

一个常见的用例是bouncycastle,需要从签名的JAR中排除,并在运行时使用自己的jar文件在外部提供。

答案 1 :(得分:3)

类似于吉列尔莫建议修改项目的内容:配置文件包括以下内容:

:provided {:dependencies [[org.bouncycastle/bcprov-jdk15on "1.50"]
                          [org.bouncycastle/bcpg-jdk15on "1.50"]]}

(具体版本可能会有所不同。)

麻烦的是,如果你使用Clojure包装器库(例如clj-pgpthi.ng/crypto),它会强制将jar包含在uberjar中,从而破坏了这个过程。

我的解决方案是在修改其project.clj以使用提供的依赖项之后对库进行分叉并将其推送到clojars。

此处有更多详情:http://side-effects-bang.blogspot.com/2015/02/deploying-uberjars-that-use-bouncy.html

答案 2 :(得分:0)

project.clj下的:dependencies中,您可以为特定的jar添加排除项,如下所示:

[test/test-jar "1.0" :exclusions [sample-exclusion/test-exclusions]]