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

Leiningen:uberjaring时如何排除依赖关系?,jar,clojure,leiningen,Jar,Clojure,Leiningen,当使用leiningen构建Clojure应用程序时,当使用lein uberjar时,如何将某些依赖项排除在JAR文件中?使用leiningen配置文件提供的条目 :profiles {:dev {:dependencies [[ring-mock "0.1.5"] [prismatic/dommy "0.1.3"] [org.bouncycastle/bcpr

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

使用leiningen配置文件提供的
条目

 :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文件从外部提供。

类似于Guillermo建议修改项目的:概要文件,以包括以下内容:

:provided {:dependencies [[org.bouncycastle/bcprov-jdk15on "1.50"]
                          [org.bouncycastle/bcpg-jdk15on "1.50"]]}
(具体版本可能有所不同。)

问题是,如果您使用Clojure包装库(例如
clj pgp
thi.ng/crypto
),它会强制将jar包含在uberjar中,从而破坏进程

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


此处有更多详细信息:

项目.clj
:依赖项下,您可以为特定JAR添加排除项,如下所示:

[测试/测试jar“1.0”:排除[样本排除/测试排除]]