如何让Erlang应用程序在启动rebar3时运行

时间:2016-10-24 06:14:33

标签: rebar3

我可以通过application:start(lager)后跟application:start(myapp)从rebar3 shell手动启动应用程序。我不需要输入它就可以发生这种情况,例如通过执行一个告诉rebar3运行这些命令的shell脚本。这可能吗?

2 个答案:

答案 0 :(得分:9)

假设您想在开发期间运行应用程序,您可以这样做:

  • 要么在命令行指定应用,请执行以下操作:rebar3 shell --apps lager myapp

  • 或者您在rebar.config {shell, [{apps, [lager, myapp]}]}.中指定,然后只需使用rebar3 shell运行它。例如,我有一个名为tron的应用程序,并在我的rebar.config中有以下行:{shell, [{apps, [kernel,stdlib,cowboy,lager,tron]}]}。现在,当我运行rebar3 shell时,我的erlang应用程序与所有依赖项一起启动。

有关rebar3 shell以及如何使用它的更多信息,请参阅创建者的this awesome blogpost或官方文档here

但是你可能知道,运行应用程序进行部署的正确方法是首先构建一个发行版,然后简单地将其作为可执行文件运行(因为我构建了一个版本但是有一段时间了不幸的是,那时它比听起来更难!虽然看起来像rebar3可能让它变得更容易:rebar3 releases

答案 1 :(得分:-1)

我想补充一点,您还可以在myapp.app.src文件中指定要在启动时启动的应用程序。

...
{applications,
   [kernel,
    stdlib,
    anotherapp
   ]},
...