一、菱形依赖
所有的依赖问题,大抵都会与“菱形依赖”有关。也就是如图所示, Web Lib 和 Log Lib 都依赖于 JSON Lib(相当于菱形的下半部分):

Web Lib 和 Log Lib 对于 JSON Lib 的依赖要求是不同的,Web Lib 要求 >=1.0 ,而 Log Lib要求 >= 2.0 ,最终的 Log Lib 需要同时满足这两种条件,也就是 >= 2.0 。
而当这写条件无法满足的时候,这个系统就崩溃了。不过如果软件都保持向后兼容性(backward compability),那么按理说应该我们总能通过“装最新版”的方式来解决依赖问题。但问题就在于,这里是现实:

