我想在单个代码库中创建一些具有不同main
个入口点的uberjars。我看到您可以将main
命名空间指定为lein uberjar
的参数,但我没有看到指定结果文件名或路径的方法,因此它们只会相互覆盖。有没有办法从命令行覆盖输出文件名或路径?
或者有更好的方法吗?有单独的项目文件,都引用一个中央“库”项目?如果是这样,它的物理结构会是什么以及如何构建它?
答案 0 :(得分:19)
您可以使用多个Leiningen profiles来完成您所说的内容。
(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
答案 1 :(得分:1)
这是一个annotated reference来源,您可以在其中找到用于指定输出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"