Erlang 多个应用程序依赖于同一个应用程序,但分支不同

Erlang 多个应用程序依赖于同一个应用程序,但分支不同,erlang,rebar,Erlang,Rebar,我让应用程序A依赖于应用程序B,A和B都依赖于应用程序C A需要C的主分支,B需要C的其他分支 有没有办法解决这个问题 我假设您编写了A。如果C应用程序是向后兼容的,那么将B的依赖项修改为C master 如果不是。。。然后好如果这些版本真的不同,那么我想到的唯一合理但不是真正的解决方案就是分叉一个C并修改它的名称、所有模块名称和引用,方法是添加类似于_ver_x_y_z的内容,然后修改它在A或B中的引用。 如果没有对模块名的奇怪的运行时解析引用,它应该可以工作。您还需要修改ets和mnesia

我让应用程序A依赖于应用程序B,A和B都依赖于应用程序C

A需要C的主分支,B需要C的其他分支


有没有办法解决这个问题

我假设您编写了A。如果C应用程序是向后兼容的,那么将B的依赖项修改为C master

如果不是。。。然后好如果这些版本真的不同,那么我想到的唯一合理但不是真正的解决方案就是分叉一个C并修改它的名称、所有模块名称和引用,方法是添加类似于_ver_x_y_z的内容,然后修改它在A或B中的引用。 如果没有对模块名的奇怪的运行时解析引用,它应该可以工作。您还需要修改ets和mnesia表、已注册进程和资源文件中可能出现的名称冲突。。。还有一些难以预测的事情

据我所知,ErlangVM中的模块名只是原子,无法保持不同版本的加载和引用,唯一的例外是热代码交换


我很乐意阅读更有经验的程序员的答案。可能已经有一些工具专门针对这个问题编写。

谢谢,请参阅本期,我使用原始DEP和pre_hook作为解决方法。@linbo,所以它是向后兼容的,你很幸运。