微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Erlang / Rebar3-如何添加要发布但不启动的应用程序?

如何解决Erlang / Rebar3-如何添加要发布但不启动的应用程序?

我有一个总括项目,包括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,{include_erts,false},{extended_start_script,true}]
}.

{profiles,[
  {prod,[
    {relx,[
      {dev_mode,"./config/prod_sys.config"},"./config/prod_vm.args"}
    ]}
  ]}
]}.

如果我使用sudo rebar3 shell-我可以管理app1和app2。 但是,如果我用sudo rebar3 as prod tar打包发行版,则会得到一个tar存档,其中不包含app1和app2的射线文件。 我知道,如果我使用kernel,main_app将app1和app2放到列表的发布部分中-我需要的应用程序将被添加到发布中,但是它们将自动启动(我需要自己启动)!

如何配置钢筋以将所有库或应用程序添加到tar版本中,而不在启动main_app期间启动它们?

谢谢!

解决方法

使用{app,load}语法:

{relx,[
    {release,{ Project,Version },[
        {app1,load}
...

这样,应用程序已加载但未启动。如果您既不想加载也不启动应用程序,请使用{app,none}(尽管代码仍在加载)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。