• 应用资源文件

    应用资源文件

    我们通过创建一个放在应用资源文件——简称 .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) 中有详细的描述。