设置 leiningen 配置文件以在环境和多个电源之间进行多路复用
Setting up leiningen profiles to multiplex between environments AND multiple mains
我目前有一个 Clojure 项目设置,它允许我通过在 Leiningen 的项目地图中配置配置文件来将配置从 dev
切换到 test
或 prod
。与配置文件相关的部分如下所示:
: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.
这样的配置文件来实现这一点
我不知道该怎么做的是如何保留我的配置,以便配置文件与环境相对应,但还要进一步配置它以便能够通过简单地添加来选择主要 class lein run
.
的参数
我发现一种方法显然是保持只有一个主 class 并添加与实际 Clojure 代码的多路复用,但我希望能够通过 lein 配置来实现。
在尝试了多种选择后,我发现唯一的方法是通过 aliases
。
首先将 :main
选项设置为 nil,因此 MANIFEST.MF 没有任何 Main.class
设置,然后简单地添加几个别名指定主要 class 到 运行.
:main nil
:target-path "target/%s"
:aliases {"main1" ["run" "-m" "project.main1.core"]
"main2" ["run" "-m" "project.main2.core"]}
我目前有一个 Clojure 项目设置,它允许我通过在 Leiningen 的项目地图中配置配置文件来将配置从 dev
切换到 test
或 prod
。与配置文件相关的部分如下所示:
: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.
这样的配置文件来实现这一点我不知道该怎么做的是如何保留我的配置,以便配置文件与环境相对应,但还要进一步配置它以便能够通过简单地添加来选择主要 class lein run
.
我发现一种方法显然是保持只有一个主 class 并添加与实际 Clojure 代码的多路复用,但我希望能够通过 lein 配置来实现。
在尝试了多种选择后,我发现唯一的方法是通过 aliases
。
首先将 :main
选项设置为 nil,因此 MANIFEST.MF 没有任何 Main.class
设置,然后简单地添加几个别名指定主要 class 到 运行.
:main nil
:target-path "target/%s"
:aliases {"main1" ["run" "-m" "project.main1.core"]
"main2" ["run" "-m" "project.main2.core"]}