如何在Erlang中使用嵌套模块加载执行应用程序?

时间:2014-04-18 12:19:38

标签: erlang

我正在创建一个名为(app_main)的erlang应用程序,它将初始化另外两个erlang应用程序(app_1和app_2):

以下是代码的结构。请注意 app_1 app_2 位于 deps 目录下,每个目录都有自己的deps目录,这些目录会扩展到其他嵌套对其他代码目录结构的引用等...

/app_main
   /ebin
       /main.erl
   /deps
       /app_1
           /ebin
           /deps
               /...
       /app_2
           /ebin
           /deps
               /...

要启动我的 app_main 应用程序,我将发出以下命令:

erl -pa ./ebin   ./deps/*/ebin   ./deps/*/deps/*/ebin -s app_main

问题在于我需要知道我可能有多少级别的嵌套deps引用...这对我来说听起来有点不合逻辑,我想知道是否有更好的方法来实现这一点。

例如, rebar 是否可用于识别嵌套的钢筋配置并自动将所有依赖项添加到app_main的deps目录中?

2 个答案:

答案 0 :(得分:1)

Rebar对于管理依赖项非常有用。您可以将app 1和2定义为主应用程序的依赖项,假设app 1和2在Rebar中定义了它们的依赖项,它将在deps文件夹中安装它们及其依赖项

请参阅此处的Rebar文档:https://github.com/basho/rebar/wiki/Dependency-management

答案 1 :(得分:1)

您如何指定这些依赖项,它们来自何处,以及如何编译它们?当您使用第三方应用程序时,他们通常会管理自己的依赖项。因此,您应该只需要像这样启动shell:

erl -pa ebin deps/*/ebin

Rebarerlang.mk都是管理应用程序及其依赖项的绝佳工具。