13

我想main从单个代码库创建许多具有不同入口点的 uberjar。我看到您可以将main命名空间指定为参数,lein uberjar但我看不到指定结果文件名或路径的方法,因此它们只会相互覆盖。有没有办法从命令行覆盖输出文件名或路径?

或者有没有更好的方法来做到这一点?是否有单独的项目文件都引用了一个中央“库”项目?如果是这样,它的物理结构会是什么样子以及如何构建它?

4

2 回答 2

22

您可以使用多个Leiningen 配置文件来完成您正在谈论的内容。

(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
于 2013-10-12T15:04:14.490 回答
1

这是一个带注释的参考源,您可以在其中找到用于指定输出 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"
于 2017-11-04T18:40:03.530 回答