我想從一個代碼庫創建一些具有不同main
入口點的uberjars。我看到你可以指定main
命名空間作爲參數lein uberjar
,但我沒有看到一種方法來指定結果文件名或路徑,所以它們只會覆蓋另一個。有沒有辦法覆蓋命令行的輸出文件名或路徑?在leiningen創建多個uberjars
或者有沒有更好的方法來做到這一點?有獨立的項目文件,都參考中央「圖書館」項目?如果是這樣,這個外觀的物理結構是什麼,以及如何建立它?
我想從一個代碼庫創建一些具有不同main
入口點的uberjars。我看到你可以指定main
命名空間作爲參數lein uberjar
,但我沒有看到一種方法來指定結果文件名或路徑,所以它們只會覆蓋另一個。有沒有辦法覆蓋命令行的輸出文件名或路徑?在leiningen創建多個uberjars
或者有沒有更好的方法來做到這一點?有獨立的項目文件,都參考中央「圖書館」項目?如果是這樣,這個外觀的物理結構是什麼,以及如何建立它?
您可以使用多個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
下面是一個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"
我注意到的是,產生的JAR文件名不被'修改:uberjar-name'選項。看起來像':name'必須在配置文件中設置,而不是爲了生成不同的命名jar文件。 – Adam
Leiningen 2.5.0在配置文件內忽略':uberjar-name'的問題。它計劃與Leiningen 2.5.2一起解決。 https://github.com/technomancy/leiningen/issues/1718 – Jared314