非常教程

Erlang 20参考手册

核心 | kernel

app

档案

APP

文件摘要

应用程序资源文件。

描述

应用资源文件指定应用程序使用的资源以及应用程序如何启动。必须始终有一个应用程序资源文件名为Application.app每项申请Application在系统里。

应用程序控制器在加载/启动应用程序时读取该文件。中的函数也使用它。systools例如,在生成开始脚本时。

文件语法

应用程序资源文件将被调用。Application.app,在哪里Application是应用程序的名称。该文件位于目录中。ebin为了申请。

该文件必须包含单个Erlang术语,称为应用规范*

{application, Application,
  [{description,  Description},
   {id,           Id},
   {vsn,          Vsn},
   {modules,      Modules},
   {maxP,         MaxP},
   {maxT,         MaxT},
   {registered,   Names},
   {included_applications, Apps},
   {applications, Apps},
   {env,          Env},
   {mod,          Start},
   {start_phases, Phases},
   {runtime_dependencies, RTDeps}]}.

             Value                Default
             -----                -------
Application  atom()               -
Description  string()             ""
Id           string()             ""
Vsn          string()             ""
Modules      [Module]             []
MaxP         int()                infinity
MaxT         int()                infinity
Names        [Name]               []
Apps         [App]                []
Env          [{Par,Val}]          []
Start        {Module,StartArgs}   []
Phases       [{Phase,PhaseArgs}]  undefined
RTDeps       [ApplicationVersion] []

Module = Name = App = Par = Phase = atom()
Val = StartArgs = PhaseArgs = term()
ApplicationVersion = string()

Application应用程序名称。

对于应用程序控制器,所有键都是可选的。对于任何省略的键,都使用各自的默认值。

的功能systools需要更多信息。如果使用这些密钥,则必须使用下列密钥:

  • description
  • vsn
  • modules
  • registered
  • applications

忽略其他键。systools...

description

应用程序的一行描述。

id

产品标识,或类似的。

vsn

应用程序的版本。

modules

此应用程序引入的所有模块。systools在生成开始脚本和tar文件时使用此列表。模块只能在一个应用程序中定义。

maxP

不建议-被忽略

应用程序中允许的最大进程数。

maxT

允许应用程序运行的最大时间(毫秒)。指定时间后,应用程序将自动终止。

registered

在此应用程序中启动所有已注册进程的名称。systools使用此列表检测不同应用程序之间的名称冲突。

included_applications

此应用程序包含的所有应用程序。启动此应用程序时,所有包含的应用程序都由应用程序控制器自动加载,但不启动。假定包含的应用程序的最高主管由该应用程序的主管启动。

applications

允许启动此应用程序之前必须启动的所有应用程序。systools使用此列表来生成正确的启动脚本。缺省为空列表,但请注意所有应用程序对(至少)Kernel和STDLIB都有依赖关系。

env

应用程序使用的配置参数。通过调用来检索配置参数的值application:get_env/1,2。应用程序资源文件中的值可以由配置文件中的值(请参阅参考资料config(4))或命令行标志(请参阅参考资料)中的值覆盖erts:erl(1)

mod

指定应用程序回调模块和开始参数,请参见application(3)...

mod对于作为监督树实现的应用程序来说,这是必需的,否则应用程序控制器不知道如何启动它。mod对于没有进程的应用程序,可以省略,通常是代码库,例如STDLIB。

start_phases

应用程序的开始阶段列表和相应的开始参数。如果存在此键,则应用程序主程序除了通常调用Module:start/2,也会呼叫Module:start_phase(Phase,Type,PhaseArgs)对于由Key定义的每个开始阶段start_phases.只有在这一延长的开始程序之后,application:start(Application)退货。

启动阶段可用于同步启动应用程序及其包含的应用程序。在这种情况下,密钥mod必须具体说明如下:

{mod, {application_starter,[Module,StartArgs]}}

然后,应用程序主机会调用Module:start/2主应用程序,然后调用Module:start_phase/3每个启动阶段(为主应用程序定义),既为主应用程序启动阶段,也为其启动阶段定义的每个应用程序启动。

这意味着对于包含的应用程序,开始阶段的集合必须是为主应用程序定义的一组阶段的子集。有关更多信息,请参见OTP Design Principles...

runtime_dependencies

应用程序依赖的应用程序版本列表。这种应用程序版本的一个例子是"kernel-3.0"。指定为运行时相关性的应用程序版本是最低要求。也就是说,比依赖关系中指定的更大的应用程序版本满足要求。有关如何比较应用程序版本的信息,请参阅Versions系统原理用户指南中的一节。

注意,应用程序版本指定了源代码版本。另一个间接的要求是,构建指定版本的已安装二进制应用程序,使其与系统的其他部分兼容。

某些依赖项只能在特定的运行时场景中被要求。如果存在这种可选的依赖项,则在特定应用程序的相应“App”文档中指定并记录这些依赖项。

警告

runtime_dependencies密钥在OTP 17.0介绍。其值的类型可能会在OTP 17发布期间发生变化。

警告

在OTP 17发行版期间,OTP应用程序中指定的所有运行时依赖项可能都不是完全正确的。这方面的工作正在积极进行中。OTP应用程序中声明的运行时依赖项在OTP 18中是正确的。

另见

application(3),,,systools(3)

Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1