我在文档中找不到它(或者,更有可能的是,我错过了它),所以我假设这些是步骤:
1.将现有Erlang应用程序(或使用rebar3 new app
创建新应用程序)复制到<umbrella_root>/apps/
(或<umbrella_root>/libs/
1.将新应用程序添加到<umbrella_root>/rebar.config
中的relx
部分:
{ relx
, [ {release
, { your_big_project_name, "0.1.0" }
, [ your_big_project_name_or_smth_else
, the_newly_copied_app
% , sasl
]
}
, {sys_config, "./config/sys.config"}
, {vm_args, "./config/vm.args"}
, {dev_mode, true}
, {include_erts, false}
, {extended_start_script, true}
]
}.
1.将新应用程序所需的配置环境变量添加到<umbrella_root>/config/sys.config
。
1.如果新应用使用插件,请在<umbrella_root>/apps/<new_app>/rebar.config
中配置它。
如果是,这是否意味着伞式应用程序可以嵌套?(这可能是一个单独的问题)。
1条答案
按热度按时间2ledvvac1#
Yes, that should be it all you need to include an app file in a release.
Regarding nested umbrella applications, please have a look at the following thread in rebar3's site
EDIT:
The linked thread talks about having umbrella apps as dependencies, which is not supported by rebar3. Quote:
Umbrella applications of that form are just not supported as dependencies. Handling versioning and locking for a single dependencies that contains multiple apps is not a thing we ever figured out, so it's just not doable.
That does not mean that you cannot use some tricks, like using git submodules and multiple project_app_dirs configured in the root. For rebar3 those apps will be local apps, you'll need to handle them from 'outside' rebar3, though (not really 'nested' umbrella applications).