parent和dependency的区别:
parent只能继承pom.xml中配置的依赖。 通过<parent>引用的项目A, 可以使用A项目中<dependency>中依赖的StringUtils的方法, 但是不能调用A项目中自己定义的类和方法, C项目中通过<dependency>依赖的A,两者却都可以调用。
parent:将需要依赖的jar包放到一个模块中,然后使用parent来标识依赖包, 方便版本修改,只需要修改模块中版本,parent标记中可以不用版本号。 有两个web项目A、B,一个java项目C 它们都需要用到同一个jar包:common.jar。 如果分别在三个项目的pom文件中定义各自对common.jar的依赖, 那么当common.jar的版本发生变化时, 三个项目的pom文件都要改,项目越多要改的地方就越多,很麻烦。 这时候就需要用到parent标签, 我们创建一个parent项目, 打包类型为pom,parent项目中不存放任何代码, 只是管理多个项目之间公共的依赖。 在parent项目的pom文件中定义对common.jar的依赖, ABC三个子项目中只需要定义<parent></parent>, parent标签中写上parent项目的pom坐标就可以引用到common.jar了。
dependency及dependencyManagement区别:
1.在同一个pom文件下, 如果<dependencies>和<dependencyManagement>中都对该jar做了依赖, 以<dependencies>的为准,优先级高于<dependencyManagement>。 若前者没有对其依赖,而后者对其有依赖,则以后者为准。<dependencyManagement>里只是声明依赖,并不实现引入. 2.在不同的pom文件中, 存在父子相互依赖关系的, 父项目的pom中<dependencyManagement>中对该jar做了依赖, 而子项目中<dependencies>又依赖了该jar, 如果子项目中没有指定<version>和<scope>, 则继承父项目中该jar的<version>和<scope>。 如果子项目中指定了<version>和<scope>,以子项目的为准。
dependencyManagement:相当于提前声明一个依赖,但可以被重写 有一个springmvc.jar,只有AB两个web项目需要, C项目是java项目不需要,那么又要怎么去依赖。 如果AB中分别定义对springmvc.jar的依赖, 当springmvc.jar版本变化时修改起来又会很麻烦。 解决办法是在parent项目的pom文件中使用 <dependencyManagement></dependencyManagement> 将springmvc.jar管理起来, 如果有哪个子项目要用,那么子项目在自己的pom文件中使用