Module 将模块集合打包为Erlang应用程序?

Module 将模块集合打包为Erlang应用程序?,module,erlang,package,synchronous,Module,Erlang,Package,Synchronous,我一直在研究一些相对简单的Erlang模块。我有4个模块,它们一起工作。所有模块名称都是“名称空间”,如下所示: project project_helper project_another_module project_third_submodule 模块很简单。它们只包含函数。没有什么是同时发生的。没有进程、主管或gen_服务器。只是功能。要使用代码,只需调用顶级项目模块中的函数。所有呼叫都是同步的。传入数据,等待函数完成,然后返回数据 我的问题是,如何打包这些代码?是否需要将其设置为应用

我一直在研究一些相对简单的Erlang模块。我有4个模块,它们一起工作。所有模块名称都是“名称空间”,如下所示:

project
project_helper
project_another_module
project_third_submodule
模块很简单。它们只包含函数。没有什么是同时发生的。没有进程、主管或gen_服务器。只是功能。要使用代码,只需调用顶级
项目
模块中的函数。所有呼叫都是同步的。传入数据,等待函数完成,然后返回数据


我的问题是,如何打包这些代码?是否需要将其设置为应用程序?Erlang应用程序提供了哪些好处?

您必须将其打包为应用程序,以便其他应用程序可以将您的库作为依赖项放在其.app文件中。 此信息在版本生成过程中用于包括您的库

要执行此操作,请在
您的_library.app
中省略
{mod,…}
部分

从应用程序手册:(
erl-man应用程序


这取决于您计划如何使用代码。 您不必将代码设置为应用程序。 打包它的简单方法是使用命令c(Module)通过erlangshell编译所有模块,然后压缩文件夹并在需要时发送

但是,我建议遵循OTP申请的最佳实践:

如果您将代码设置为OTP应用程序,它将为您提供可重用性。 您可以在稍后创建的其他应用程序中包含这些模块

我建议使用钢筋()作为构建工具。
并将您的代码放入一些源代码管理环境中,以便您可以更轻松地将代码包含在未来的项目中。

当需要打包一组模块时,它们仍然属于应用程序。应用程序根本不需要回调模块。了解一些Erlang将这些类型的应用程序称为“库应用程序”。库
.app
文件应该像普通的
.app
文件一样。唯一的区别是mod元组(
{mod,{Module,Args}
)不存在

有关更多详细信息,请参阅LYSE:

mod:
  Specifies the application callback module and a start argument, see application(3).

  The  mod  key is necessary for an application implemented as a supervision tree, or the application controller will not know how to start it. The mod key can be
  omitted for applications without processes, typically code libraries such as the application STDLIB.