【发布时间】:2015-06-09 16:20:39
【问题描述】:
我有一个 clojure Web 应用程序(码头服务器上的标准环处理程序和组合路由),我为此启用了实时资产重新编译作为中间件,这在开发中非常方便。随着我们接近生产,我想找到一种方法不在生产中加载该代码,而是读取预编译的资产(我能够作为 lein 任务生成)。
目前资产编译机制存在于项目代码中 - 它可以使用 eval-in-project 从 lein 任务中加载,因此我可以在两个地方重用相同的代码。然而,这意味着不需要的文件被编译并包含在生产应用程序中。
另一个问题是我正在使用一个资产编译工具,如果 uberjar'ed 会导致应用程序在初始化时加载失败,因为它使用到 v8 的本机绑定,这些绑定不可用(也不是需要)当预编译的资产可用时。
如何避免在生产 uberjar 中加载此代码,但仍可在开发和测试期间从运行时的动态重新编译中受益?
【问题讨论】:
-
查看Environ 以及添加
dev和uberjar配置文件的选项。 -
谢谢 - 我已经在使用 environ 进行配置管理,所以 noisesmith 的回答很容易实现。