在莱宁根创造多个uberjars

Dax*_*ohl 13 clojure leiningen

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

或者有更好的方法吗?有单独的项目文件,都引用一个中央"库"项目?如果是这样,它的外观结构会是什么以及如何构建它?

Jar*_*314 19

您可以使用多个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"}})
Run Code Online (Sandbox Code Playgroud)

而且,你可以用以下方法构建它们:

$ lein with-profile v1:v2:v3 uberjar
Run Code Online (Sandbox Code Playgroud)

  • 我注意到生成的 jar 文件名没有被 `:uberjar-name` 选项修改。看起来必须在配置文件中设置 `:name` 才能生成不同的命名 jar 文件。 (2认同)