设置leiningen配置文件以在环境和多个电源之间进行多路复用

时间:2019-01-25 10:31:32

标签: clojure leiningen

我目前为Clojure项目设置了一个设置,该设置允许我通过在Leiningen项目图中配置配置文件来将配置从dev切换到testprod。与配置文件相关的部分如下所示:

  :main ^:skip-aot myproject.core
  :target-path "target/%s"

  :profiles {:uberjar    {:aot :all}
             :dev        {:env {:clj-env :development
                                :database-uri "jdbc:postgresql://localhost:5432/db_dev"}}
             :test       {:env {:clj-env :test
                                :database-uri "jdbc:postgresql://localhost:5432/db_test"}}
             :production {:env {:clj-env :production
                                :database-uri "jdbc:postgresql://localhost:5432/db"}}})

问题是我想进一步增强这一功能,并能够在多个电源之间切换。我在其他帖子中看到人们通常通过配置here之类的配置文件来实现这一目标。

我不知道该怎么做,如何保留我拥有的配置,以便配置文件与环境相对应,还可以对其进行进一步配置,以便能够通过简单地向{{1 }}。

我发现一种方法显然是保持只有一个主类,并使用实际的Clojure代码添加该多路复用,但是我希望能够通过lein配置来做到这一点。

1 个答案:

答案 0 :(得分:0)

尝试了多个选项后,我发现执行此操作的唯一方法是通过aliases

首先将:main选项设置为nil,以便MANIFEST.MF没有设置任何Main.class,然后简单地添加几个别名来指定要运行的主类。

:main nil
:target-path "target/%s"
:aliases {"main1" ["run" "-m" "project.main1.core"]
          "main2" ["run" "-m" "project.main2.core"]}