gpt4 book ai didi

erlang - 发布时如何使 rebar/reltool 尊重 ebin 中的子目录?

转载 作者:行者123 更新时间:2023-12-02 00:28:01 25 4
gpt4 key购买 nike

在我的应用中,我的目录结构如下所示:

src/
api/
server.erl
model.erl
common/
common_stuff.erl
util.erl
some_app.erl
some_server.erl
something_else.erl
some_app.app.src

驻留在子目录(common、api 等)中的文件以通常的包样式命名空间。例如,src/common/util.erl 声明为:

-module(common.util).

src/api/server.erl 声明为:

-module(api.server).

等等。

rebar compile 完美运行并在 ebin 中生成适当的子目录树:

ebin/
api/
server.beam
model.beam
common/
common_stuff.beam
util.beam
some_app.beam
some_server.beam
something_else.beam
some_app.app

但是,rebar generate 只会将顶级文件复制到 rel 目录:

rel/some_app/lib/some_app-0.0.2/ebin/
some_app.beam
some_server.beam
something_else.beam
some_app.app

驻留在子目录中的所有内容都不会复制到发布版中。因此,当我尝试启动生成的版本时,我立即收到这种错误消息:

{"init terminating in do_boot",{'cannot load','api.server',get_files}}

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()

我的 rebar 生成的 ebin/some_app.app 确实列出了所有必需的模块:

{application,some_app,
[{description,"0.0.2"},
{vsn,"0.0.2"},
{registered,[]},
{applications,[kernel,stdlib,sasl]},
{mod,{some_app,[]}},
{env,[]},
{modules,['api.server','api.model','common.common_stuff',
'common.util', some_app, some_server,
something_else]}]}.

有人知道如何让“rebar generate”尊重 ebin 的子目录吗?我相信这也可能是 reltool 的问题。

谢谢。

最佳答案

erlang 只支持平面应用结构·

“Packages 自 5 年多前推出以来一直是一项实验性功能。使用它需要您自担风险,我们不会积极维护和开发此功能。但是它可能有一天会得到支持。

尽管这些包工作得很好,但在工具和其他部分中存在一些已知问题,包无法正常工作。”

http://www.erlang.org/doc/man/packages.html

关于erlang - 发布时如何使 rebar/reltool 尊重 ebin 中的子目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8125734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com