Настройка профилей leiningen для мультиплексирования между средами и несколькими сетями - PullRequest
0 голосов
/ 25 января 2019

В настоящее время у меня есть настройка для моего проекта Clojure, которая позволяет мне переключать конфигурацию с 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"}}})

Проблема в том, что я хотел бы еще улучшить это и иметь возможность переключаться между несколькими сетями. Я видел в других сообщениях, что люди обычно достигают этого, настраивая такие профили, как здесь .

Что я не знаю, как это сделать, так это как сохранить имеющуюся у меня конфигурацию, чтобы профили соответствовали средам, а также дополнительно настраивать ее, чтобы иметь возможность выбирать основной класс, просто добавив параметр в lein run .

Я понял, что одним из способов, очевидно, является сохранение только одного основного класса и добавление этого мультиплексирования с реальным кодом Clojure, но я надеялся, что смогу сделать это через конфигурацию lein.

1 Ответ

0 голосов
/ 25 января 2019

После опробования нескольких опций единственный способ, который я нашел, это сделать через 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"]}
...