Jer*_*all 11
*.app和*.rel文件用于生成启动脚本.启动erlang时,启动脚本用于自动启动我的应用程序.应用程序资源文件描述了在启动应用程序之前需要运行的应用程序.例如,如果我使用mnesia并在我的应用程序的.app文件中指明,当我生成启动脚本并使用它来启动我的应用程序时,它将在启动我自己的应用程序时为我启动mnesia.
虽然您可以与其他软件包管理器进行自动依赖项安装/处理,但引导脚本对于管理应用程序启动时的依赖关系非常有用,这在OTP应用程序设置中非常重要.
注意:otp中的应用程序是指一组正在运行的进程和/或代码.应用程序可以通过多种方式依赖于其他应用程序.要么要么安装代码,要么要求应用程序运行.
它们用于构建版本时(使用*.rel生成启动脚本).我建议只从*.app文件和应用程序行为回调开始.至于从OTP开始.这是一个很好的开发中心:
-module(foo).
-export([start/0]).
start() ->
[application:start(A) || A <- [sasl, inets, x, y, etc]].
Run Code Online (Sandbox Code Playgroud)
通过简单的方式启动您依赖于运行应用程序的所有应用程序
$ erl -s foo
Run Code Online (Sandbox Code Playgroud)
-mnesia dir '"/some/path"'给erl时,它被mnesia应用程序访问为application:get_env(mnesia, dir).如果定义了一个名为的应用程序foo,则可以传递-foo key 'some-Erlang-literal'给erl.*.app文件可以包含该env部分中的默认值,*.rel文件会覆盖它们,命令行会覆盖它们.我不太了解Erlang应用程序的一些其他功能:
最终,您将开始希望以更结构化的方式启动应用程序集,这就是整个发布/启动脚本变得更容易理解的时候.或者相反,你会认为这对你的具体需求来说太过分了.刚开始使用一个简单的*.app和一个带有应用程序行为回调的模块.你不会回头看.