在我的 Leiningen project.clj 中,我使用environ在不同的配置文件中设置环境变量。我想用 lein-ring 构建一个演示 uberjar,它对某些环境变量使用与生产版本不同的值。但是,出于某种原因,我似乎无法接听它们。
我demo
在我的 project.clj 中有一个类似这样的配置文件:
:demo {:dependencies [[javax.servlet/servlet-api "2.5"]]
:plugins [[lein-environ "0.4.0"]]
:env {:foo "FOO" :bar "BAR"}}
然后我执行
lein with-profile demo ring uberjar
environ.core/env
但是在这两种情况下,在生成的独立 jar中访问 foo 或 bar都会返回nil
。另一方面,如果我跑
lein with-profile demo ring server-headless
我可以访问两者的值。
为什么会这样?这真的不是我所期望的。看起来 uberjar 总是使用生产配置文件创建的。还是有别的事情发生?
lein -ring页面确实说明了以下内容:
Lein-Ring 关注几个环境变量,包括: PORT - 网络服务器用于 HTTP 的端口 SSLPORT - 网络服务器用于 HTTPS 的端口
这些将覆盖 project.clj 文件中指定的任何选项,但不会覆盖命令行中指定的任何选项。
但是,不清楚这是否意味着 project.clj 中指定的任何其他环境变量都将被忽略。
在 Windows 上运行 leiningen 2.3.4。