因此,在当今的软件工程时代,代码重用非常重要,现代语言具有某种形式的依赖管理。 Dartlang通过使用Pub来实现这一目标。但是,pub采用了使用共享依赖关系的方法,这意味着如果两个或多个库具有共同的依赖关系,那么依赖关系将被下载一次并且库共享它...这当然导致非常烦恼问题。
这是经常发生的事情。您正在开发一个需要n + 1个库的项目。一些库具有相同的依赖性是相当普遍的。它们很可能依赖于所述依赖项的不同版本。它太糟糕了,pub必须提供覆盖依赖项的选项。您可能认为可能只是使用所述库的最新版本,但代码总是在不断变化,因此不同的版本往往会发生重大变化......
Pub尝试自己做出妥协,但它通常只是放弃说它不能这样做,让你手动尝试上面提到的覆盖。很多时候,你花费更多的时间来尝试混合和匹配你的库的版本,直到你得到一对看起来彼此很好的一对。将更新推送到一个修复了影响项目的错误的库时,它也 非常烦恼 ,但是您不想更新,因为那样做更改所需的共享依赖项版本,从而打破其他库>。>
这个垃圾的一个很好的例子是Polymer和Angular。我知道他们的代码仍在不断变化,但我可以告诉你,很多人都喜欢一起使用它们! Polymer和Angular是两个独立的项目,期望各自的社区确保所有版本保持相互兼容是非常不合理的。
我来自Java背景。 Java没有内置的依赖关系管理。但是,如果您想创建一个大型Java项目,社区就会创建两个或多或少需要行业的项目。他们是Maven和常春藤。为什么这个问题并不存在,因为他们决定将每个依赖关系与其他依赖关系隔离开来。如果酒吧也采取这种方法,这个问题将在一夜之间消失!
抱歉咆哮,但现在我问,有没有办法让酒吧表现得更像Maven或Ivy?如果没有,是否有第三方依赖管理器也这样做?
答案 0 :(得分:1)
这与依赖项解析无关,但是由Dart VM引起,它不支持加载同一个库的两个不同版本。
一个很大的优点是,这会使代码大小变小,这在客户端非常重要。