为什么在rebar3中,我的git出现了错误,而十六进制的dep却没有,

时间:2018-10-06 02:45:23

标签: git erlang hex rebar3

在我的Erlang项目中使用依赖项(例如

{rabbit_common, "3.7.8"}

vs

{rabbit_common, ".*", {git, "https://github.com/rabbitmq/rabbitmq-common.git", {tag, "v3.7.8"}}

使用git时,我必须进入lib文件夹中的每个依赖应用程序,并用hex在其上运行make,一切正常。

此外,当对我的应用进行docker-izing时,我发现我遇到了错误

  

未找到发布版本

使用任何git deps时,但是当我全部切换为十六进制时,它工作正常。 git对rebar3死了吗?

2 个答案:

答案 0 :(得分:3)

默认情况下,其github存储库中的rabbit_common仅支持erlang.mk作为构建工具,并且不包含rebar3(在rebar.config中)成功构建所需的数据。

Rebar3可以进入并尝试编译看起来像是尊重OTP的应用程序,但是在这种情况下,特别是因为缺少deps,rebar3将无法知道某些组件不在适当位置。 / p>

但是,与Mix和Rebar3一样,erlang.mk可以发布为十六进制。这样做会向库中添加一些其他元数据,包括依赖项。仍未添加其他信息(例如编译器选项)。总体而言,由于该库是十六进制的,而且格式良好,因此rebar3可以很好地构建它及其依赖项,但只能在十六进制上构建一次。

在可预见的将来,对git的Rebar3支持有望继续。当前的候选版本还增加了对许多混合依赖项的支持(以及https://github.com/tsloughter/rebar_mix作为插件),但是我们目前还没有开放的计划来原生支持erlang.mk项目。十六进制和一些运气是目前最好的选择。

答案 1 :(得分:1)

  

rebar3的git死了吗?

不。它仍然有效,我希望对此继续支持。