左边是父pom的,右边是子pom.这是<spring攻略>中的源码.
父pom中dependecymanagement定义完了之后又用depencies声明,不就相当于将这些依赖继承给所有的子pom?
那和把这些依赖在父pom中直接用depencies定义完全,groupid,artifactid,version都写好继承给子pom,有什么区别?而且更搞不懂的是
子pom又声明了一遍commons-lang,这样不是重复声明了吗?

解决方案 »

  1.   

    这是父pom:http://7xngf3.com1.z0.glb.clouddn.com/pom.xml
    这是子pom:http://7xngf3.com1.z0.glb.clouddn.com/pom2.xml
      

  2.   

    dependecymanagement是为了定义版本统一管理,而不是为了定义依赖。不同的子pom的依赖会不同。
    假设parent的dependencies里面定义了A、B、C的依赖,那么子pom不管是否需要都继承了这个依赖。而dependecymanagement里面定义了A、B、C,子pom如果不显式声明,并不依赖A、B、C。依赖这东西时越少越好的。一个第三方的包,依赖太多的话,我都不想用。
      

  3.   

    你看图二,父pom同时在dependencies中 声明了commons-lang这个依赖,那这样的话子pom始终继承了commons-lang这个依赖.
    图一和图二的右半部分,子pom中又声明了一遍commons-lang.
    这个应该算是重复吧.