Erlang / Rebar3 - 如何添加应用程序以发布但不启动它?
Erlang / Rebar3 - How to add an application to release but not launch it?
我有一个综合项目,包括 main_app、app1、app2。 main_app 可以单独工作,也可以使用和管理 app1 和 app2。
app1 和 app2 的启动决定在外部(特殊配置文件,由用户填写)。
我用的是rebar.config,其中一部分:
{lib_dirs, ["apps"]}.
{sub_dirs, [
"apps/main_app",
"apps/app1",
"apps/app2"
]}.
{relx, [{release, {main_app, "0.8.6"},
[kernel,
sasl,
main_app]},
{sys_config, "./config/sys.config"},
{vm_args, "./config/vm.args"},
{dev_mode, true},
{include_src, true},
{include_erts, false},
{extended_start_script, true}]
}.
{profiles, [
{prod, [
{relx, [
{dev_mode, false},
{include_erts, false},
{include_src, false},
{sys_config, "./config/prod_sys.config"},
{vm_args, "./config/prod_vm.args"}
]}
]}
]}.
如果我使用 sudo rebar3 shell
- 我可以管理 app1 和 app2。
但是,如果我按 sudo rebar3 as prod tar
打包发布 - 我会得到一个 tar 存档,其中不包含 app1 和 app2 的 beam 文件。
我知道,如果我将 app1 和 app2 放在列表中的发布部分 kernel, sasl, main_app
- 我需要的应用程序将添加到发布中,但它们会自动启动(我需要自己启动)!
如何配置 rebar 以将所有库或应用程序添加到 tar 版本,但在 tar 期间不启动它们 main_app?
提前致谢!
使用{app, load}
语法:
{relx, [
{release, { Project, Version }, [
{app1, load}
...
这样,应用程序会加载但不会启动。如果您既不想加载也不想启动应用程序,请使用 {app, none}
(但代码仍会加载)。
我有一个综合项目,包括 main_app、app1、app2。 main_app 可以单独工作,也可以使用和管理 app1 和 app2。
app1 和 app2 的启动决定在外部(特殊配置文件,由用户填写)。
我用的是rebar.config,其中一部分:
{lib_dirs, ["apps"]}.
{sub_dirs, [
"apps/main_app",
"apps/app1",
"apps/app2"
]}.
{relx, [{release, {main_app, "0.8.6"},
[kernel,
sasl,
main_app]},
{sys_config, "./config/sys.config"},
{vm_args, "./config/vm.args"},
{dev_mode, true},
{include_src, true},
{include_erts, false},
{extended_start_script, true}]
}.
{profiles, [
{prod, [
{relx, [
{dev_mode, false},
{include_erts, false},
{include_src, false},
{sys_config, "./config/prod_sys.config"},
{vm_args, "./config/prod_vm.args"}
]}
]}
]}.
如果我使用 sudo rebar3 shell
- 我可以管理 app1 和 app2。
但是,如果我按 sudo rebar3 as prod tar
打包发布 - 我会得到一个 tar 存档,其中不包含 app1 和 app2 的 beam 文件。
我知道,如果我将 app1 和 app2 放在列表中的发布部分 kernel, sasl, main_app
- 我需要的应用程序将添加到发布中,但它们会自动启动(我需要自己启动)!
如何配置 rebar 以将所有库或应用程序添加到 tar 版本,但在 tar 期间不启动它们 main_app?
提前致谢!
使用{app, load}
语法:
{relx, [
{release, { Project, Version }, [
{app1, load}
...
这样,应用程序会加载但不会启动。如果您既不想加载也不想启动应用程序,请使用 {app, none}
(但代码仍会加载)。