pom.xml中parent和dependency及dependencyManagement


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文件中使用

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM