Clojure 在leiningen创建多个Uberjar

Clojure 在leiningen创建多个Uberjar,clojure,leiningen,Clojure,Leiningen,我想从一个代码库中创建一些具有不同mainentrypoints的uberjar。我知道您可以将main名称空间指定为leinuberjar的参数,但我看不到指定结果文件名或路径的方法,因此它们只会相互覆盖。有没有办法从命令行重写输出文件名或路径 还是有更好的方法?是否有引用中心“库”项目的单独项目文件?如果是这样的话,它的物理结构会是什么样子,以及如何构建它?您可以使用多个来完成您所说的内容 (defproject project1 "0.1.0-SNAPSHOT" :descriptio

我想从一个代码库中创建一些具有不同
main
entrypoints的uberjar。我知道您可以将
main
名称空间指定为
leinuberjar
的参数,但我看不到指定结果文件名或路径的方法,因此它们只会相互覆盖。有没有办法从命令行重写输出文件名或路径

还是有更好的方法?是否有引用中心“库”项目的单独项目文件?如果是这样的话,它的物理结构会是什么样子,以及如何构建它?

您可以使用多个来完成您所说的内容

(defproject project1 "0.1.0-SNAPSHOT"
  :description "Something Amazing!"
  :dependencies [[org.clojure/clojure "1.5.1"]]
  :profiles {:v1 {:main project1.core1
                  :uberjar-name "uberjar1.jar"}
             :v2 {:main project1.core2
                  :uberjar-name "uberjar2.jar"}
             :v3 {:main project1.core3
                  :uberjar-name "uberjar3.jar"}})
并且,您可以使用以下工具构建它们:

$ lein with-profile v1:v2:v3 uberjar
下面是一个源代码,您可以在其中找到一个选项,用于指定输出jar或uberjar文件的名称,以及可以在project.clj文件中设置的任何其他选项

;;; Jar Output
;; Name of the jar file produced. Will be placed inside :target-path.
;; Including %s will splice the project version into the filename.
:jar-name "sample.jar"
;; As above, but for uberjar.
:uberjar-name "sample-standalone.jar"

我注意到结果jar文件名没有被
:uberjar name
选项修改。看起来必须在配置文件中设置
:name
,才能生成不同的命名jar文件。Leiningen 2.5.0在忽略配置文件中的
:uberjar name
时存在一个问题。计划使用Leiningen 2.5.2解决该问题。