*.app文件用来描述一个应用, 在erlang中, 应用用来表示一个独立的功能模块。它可以被
虚拟机独立启动, 应用分为库应用和普通应用, 普通应用有一个入口模块而库应用没有。
以cowboy为例子:
{application, cowboy, [
{description, “Small, fast, modular HTTP server.”},
{vsn, “2.0.0-pre.2”},
{modules, [‘cowboy’,’cowboy_app’,’cowboy_bstr’,’cowboy_clock’,’cowboy_constraints’,’cowboy_handler’,’cowboy_http2’,’cowboy_loop’,’cowboy_middleware’,’cowboy_protocol’,’cowboy_req’,’cowboy_rest’,’cowboy_router’,’cowboy_spdy’,’cowboy_static’,’cowboy_stream’,’cowboy_sub_protocol’,’cowboy_sup’,’cowboy_tls’,’cowboy_websocket’]},
{registered, [cowboy_sup,cowboy_clock]},
{applications, [kernel,stdlib,crypto,cowlib,ranch]},
{mod, {cowboy_app, []}}
]}.
首先,整个文件是一个erlang元组,原子application表示这个原子的用途是用来描述一个应用,原子cowboy表示该应用的名字。然后用一个列表来描述应用的属性
description 元组用来填充应用的字符串描述
vsn 表示应用的版本号
modules 表示该应用包含的模块
registered 表示该应用注册了哪些名字
applications 表示该应用依赖的其他应用
mod 表示应用的入口模块, 由{app_mod, parameters}组成,应用master会通过调用入口模块的start/2函数来启动应用, start的第一个参数为启动类型, 由系统自己传入, 第二个参数由这里的parameters传入。