【问题标题】:Multi applications depend on same application, but different branch多个应用程序依赖于同一个应用程序,但不同的分支
【发布时间】:2015-02-03 03:26:19
【问题描述】:

我的应用 A 依赖于应用 B,A 和 B 都依赖于应用 C。

A 需要 C 的 master 分支,B 需要 C 的另一个分支。

有没有办法解决这个问题?

【问题讨论】:

    标签: erlang rebar


    【解决方案1】:

    我假设你写了 A。如果 C 应用程序向后兼容,则修改 B 对 C 主控的依赖。

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

    据我所知,erlang vm 中的模块名称只是原子,无法保持不同版本的加载并引用它们(热代码交换除外)。

    我很想阅读更有经验的程序员的答案。也许已经有一些专门针对该问题编写的工具。

    【讨论】:

    • 谢谢,参考这个问题github.com/rebar/rebar/issues/76,我使用原始deps和pre_hook作为解决方法。
    • @linbo 所以它是向后兼容的,你很幸运。
    猜你喜欢
    • 2016-05-25
    • 2012-01-20
    • 2017-09-06
    • 2019-04-17
    • 2014-03-05
    • 1970-01-01
    • 2012-06-26
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多