在我的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死了吗?
答案 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死了吗?
不。它仍然有效,我希望对此继续支持。