【发布时间】:2015-02-03 03:26:19
【问题描述】:
我的应用 A 依赖于应用 B,A 和 B 都依赖于应用 C。
A 需要 C 的 master 分支,B 需要 C 的另一个分支。
有没有办法解决这个问题?
【问题讨论】:
我的应用 A 依赖于应用 B,A 和 B 都依赖于应用 C。
A 需要 C 的 master 分支,B 需要 C 的另一个分支。
有没有办法解决这个问题?
【问题讨论】:
我假设你写了 A。如果 C 应用程序向后兼容,则修改 B 对 C 主控的依赖。
如果不是......那么......好吧......如果这些版本真的不同,我想到的唯一合理(不是真的)解决方案是派生一个 C 并修改它的名称、所有模块名称和通过添加诸如“_ver_x_y_z”之类的内容,然后修改其在 A 或 B 中的出现。 如果没有奇怪的运行时解析对模块名称的引用,它应该可以工作。您还需要修改 ets 和 mnesia 表、注册进程和资源文件中可能出现的名称冲突......以及一些难以预测的事情。
据我所知,erlang vm 中的模块名称只是原子,无法保持不同版本的加载并引用它们(热代码交换除外)。
我很想阅读更有经验的程序员的答案。也许已经有一些专门针对该问题编写的工具。
【讨论】: