Как правильно создать uberjar с помощью "lein uberjar"?

Если я использую lein run Проект не проблема.

Но когда я использую jave -jar blog.jar после lein uberjar Бывают исключения.

16-Jul-20 11:28:05 DESKTOP-C3SC9AR INFO [slf4j-timbre.adapter] - >> starting..  *db*
Exception in thread "main" java.lang.RuntimeException: could not start [*db*] due to

        .....

Caused by: java.lang.Exception: :jdbc-url, :datasource, or :datasource-

И мой файл project.clj

(defproject blog "0.1.0-SNAPSHOT"

  :description "FIXME: write description"
  :url "http://example.com/FIXME"

  :dependencies ....

  :min-lein-version "2.0.0"
  :uberjar-name "blog.jar"
  :jvm-opts ["-server"]

  :main blog.core
  :migratus {:store :database}

  :plugins [[lein-environ "1.0.1"]
            [migratus-lein "0.2.0"]]

  :profiles
  {:uberjar {:omit-source true
             :env {:production true}
             :aot :all
             :source-paths ["env/prod/clj"]}
   :dev           [:project/dev :profiles/dev]
   :test          [:project/test :profiles/test]
   :project/dev  ...
   :project/test ...
   :profiles/dev  {:env {:database-url "jdbc:postgresql://localhost/blog?user=postgres&password=root"}}
   :profiles/test {}})

Может быть, он не может найти ключ "database-url"?

1 ответ

Решение

Данные, предоставляемые через настройки среды в project.clj, не предоставляются при непосредственном использовании Java. Вы обязаны убедиться, что параметры среды, видимые приложению, предоставляют необходимые учетные данные или информацию о соединении.

Это может выглядеть примерно так:

DATABASE_URL="jdbc...." java -jar my-project-standalone.jar
Другие вопросы по тегам