我的Erlang项目有多个应用程序:我应该如何启动它们?

Llo*_*ice 1 erlang erlang-otp erlang-shell

作为OTP noobie,我正在努力了解如何构建我的Erlang项目.到目前为止,它在rebar管理的app目录下有几个应用程序:

proj_root
   apps
      app1
      app2
      appN
   rebar.config 
Run Code Online (Sandbox Code Playgroud)

我可以在应用程序:start(app1)的shell中启动app1.毫无疑问,我可以通过appN重复这一点.但是有更好或更好的方法吗?我可以说,编写一个捆绑所有这些开头的函数吗?如果是的话,我该把它放在哪里?

我还有其他几个问题,但会另外发布.

非常感谢,

LRP

Pau*_*yot 6

您确实可以按照建议手动启动应用程序.如果您有许多应用程序并且它们之间存在依赖关系,这很快就会变得很麻烦.

使用递归函数可以很容易地实现该过程的自动化.如果在一个或多个依赖项未运行时尝试启动应用程序,application:start/1则将失败并返回{error, {not_started, App}}.此功能可以在您的任何应用程序中,甚至可以在自己的应用程序中.

但是,这种手动(或自动)方式不是OTP方式,即使它可以证明是有用的(通常用于测试......).如果您遵循OTP原则,您应该创建一个.rel包含所有应用程序的文件的版本.OTP版本由一组应用程序(它们和它们所依赖的系统应用程序),一个模拟器和一个启动所有应用程序(并处理依赖项)的启动脚本组成.可以使用-boot标志erl指向正确的引导脚本来执行使用应用程序启动节点.

这非常复杂,钢筋实际上可以构建版本.它甚至会生成shell脚本,使用OTP引导机制启动所有应用程序的节点.