【Maven】传递性依赖

来源:互联网 发布:win7无网络访问权限 编辑:程序博客网 时间:2024/06/05 10:32

    假设A依赖于BC,然后B依赖于DD又依赖于E1.0C直接依赖于E2.0,那么这个时候A依赖的是E1.0还是E2.0,还是这两个都依赖呢?两个都依赖是肯定不行的,因为它们可能会有冲突的地方。这个时候就涉及到Maven中依赖传递对版本的选择问题。依赖传递在选择版本的时候首先是根据深度选择的。

    当一个项目同时经过不同的路径依赖于同一个组件时,会选择其深度最短的对应组件进行依赖。举例来说,假设A->B->C->D1.0A->E->D2.0,那么这个时候A就会选择对D相对路径短的组件来进行依赖,也就是D2.0

    那么当深度一样的时候Maven会如何选择呢?即A->B->D1.0A->C->D2.0,这个时候Maven会如何选择A所依赖的D的版本呢?

    这种情况Maven会根据申明的依赖顺序来进行选择,先申明的会被作为依赖包。向前面这种情况,如果先申明对B的依赖,则A依赖的就是D1.0,如果先申明对C的依赖,则A依赖的就是D2.0

原创粉丝点击