Clojure 如何正确使用“创建uberjar”;莱恩·尤贝加尔;?

Clojure 如何正确使用“创建uberjar”;莱恩·尤贝加尔;?,clojure,leiningen,luminus,Clojure,Leiningen,Luminus,如果我使用lein run这个项目没有问题 但是当我在leinuberjar之后使用jave-jarblog.jar 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 .....

如果我使用
lein run
这个项目没有问题

但是当我在
leinuberjar
之后使用
jave-jarblog.jar

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 {}})

可能它找不到“数据库url”的键?

直接使用java时,project.clj中通过环境设置提供的数据不提供。您有责任确保应用程序可见的环境设置提供所需的任何凭据或连接信息

它可能看起来像:

DATABASE_URL="jdbc...." java -jar my-project-standalone.jar

哦,我明白了。但是还有其他方便的设置环境或启动jar的方法吗?谢谢。@Tornado您可以将其包装在unix shell脚本或windows bat文件中,以隐藏“复杂性”的信息user@ChrisDevoenviron是一种工具,可以让您轻松地从project.clj中设置的环境加载内容,但是当您不运行lein时,它不能设置vars-environ的预期用途是您的部署目标设置环境variables@noisesmith
environ
将从多个源加载环境变量,而不仅仅是
project.clj
:@ChrisDevo right,其中一个是我的答案中所示的环境变量——我假设基于project.clj中设置的环境,environ已经被使用了