应用资源文件

我们通过创建一个放在应用资源文件——简称 .app 文件——中的应用规格来定义一个应用:

  1. {application, Application, [Opt1,...,OptN]}.

Application 是一个代表应用的名称的原子。文件必须被命名成 Application.app

每一个 Opt 都是一个定义了应用某种特性的元组 {Key,Value} 。所有的键都是可选。忽略的键会使用默认的值。

例如,用于库应用 libapp 的最小化的 .app 文件的内容为:

  1. {application, libapp, []}.

对于像 ch_app 这样的监督树应用的最小化 .app 文件的内容为:

  1. {application, ch_app,
  2. [{mod, {ch_app,[]}}]}.

mod 定义了回调模块以及应用的启动参数,在这个例子中相应是 ch_app 和 []。这表示应用启动的时候会调用:

  1. ch_app:start(normal, [])

而当应用被停止的时候会调用:

  1. ch_app:stop([])

当使用 systools 时,Erlang/OTP工具的打包代码(参见 发布 ),键 descriptionvsnmodulesregisteredapplications 则应该指定为:

  1. {application, ch_app,
  2. [{description, "Channel allocator"},
  3. {vsn, "1"},
  4. {modules, [ch_app, ch_sup, ch3]},
  5. {registered, [ch3]},
  6. {applications, [kernel, stdlib, sasl]},
  7. {mod, {ch_app,[]}}
  8. ]}.
  • description
  • 简短描述,字符串。默认为 “”。
  • vsn
  • 版本号,字符串。默认为”“。
  • modules
  • 由该应用引入的所有模块。当生成启动脚本和tar文件时, systools 将用到这个列表。一个模块必须被定义于且仅于一个应用。默认为[]。
  • registered
  • 应用中所有注册进程的名称。 systools 使用这个列表来探测在应用之间是否有名称冲突。默认为 []。
  • applications
  • 所有在此应用之前必须启动的应用。 systools 使用该列表来生成正确的启动脚本。默认为 [],但是注意任何应用都要至少依赖于 kernel 和 stdlib 。应用资源文件的语法和内容在 app(4) 中有详细的描述。