- 应用资源文件
应用资源文件
我们通过创建一个放在应用资源文件——简称 .app 文件——中的应用规格来定义一个应用:
- {application, Application, [Opt1,...,OptN]}.
Application 是一个代表应用的名称的原子。文件必须被命名成 Application.app 。
每一个 Opt 都是一个定义了应用某种特性的元组 {Key,Value} 。所有的键都是可选。忽略的键会使用默认的值。
例如,用于库应用 libapp 的最小化的 .app 文件的内容为:
- {application, libapp, []}.
对于像 ch_app 这样的监督树应用的最小化 .app 文件的内容为:
- {application, ch_app,
- [{mod, {ch_app,[]}}]}.
键 mod 定义了回调模块以及应用的启动参数,在这个例子中相应是 ch_app 和 []。这表示应用启动的时候会调用:
- ch_app:start(normal, [])
而当应用被停止的时候会调用:
- ch_app:stop([])
当使用 systools 时,Erlang/OTP工具的打包代码(参见 发布 ),键 description、vsn、modules、registered 和 applications 则应该指定为:
- {application, ch_app,
- [{description, "Channel allocator"},
- {vsn, "1"},
- {modules, [ch_app, ch_sup, ch3]},
- {registered, [ch3]},
- {applications, [kernel, stdlib, sasl]},
- {mod, {ch_app,[]}}
- ]}.
- description
- 简短描述,字符串。默认为 “”。
- vsn
- 版本号,字符串。默认为”“。
- modules
- 由该应用引入的所有模块。当生成启动脚本和tar文件时, systools 将用到这个列表。一个模块必须被定义于且仅于一个应用。默认为[]。
- registered
- 应用中所有注册进程的名称。 systools 使用这个列表来探测在应用之间是否有名称冲突。默认为 []。
- applications
- 所有在此应用之前必须启动的应用。 systools 使用该列表来生成正确的启动脚本。默认为 [],但是注意任何应用都要至少依赖于 kernel 和 stdlib 。应用资源文件的语法和内容在 app(4) 中有详细的描述。