在Maven多模块的时候,管理依赖关系是很是重要的,各类依赖包冲突,查询问题起来很是复杂,因而就用到了<dependencyManagement>。java
在父模块中:mysql
<dependencyManagement> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.44</version> </dependency> </dependencies> </dependencyManagement>
那么在子模块中只须要<groupId>和<artifactId>便可,如:sql
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
使用dependencyManagement能够统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,不用每一个模块项目都弄一个版本号,不利于管理,当须要变动版本号的时候只须要在父类容器里更新,不须要任何一个子项目的修改;若是某个子项目须要另一个特殊的版本号时,只须要在本身的模块dependencies中声明一个版本号便可。子类就会使用子类声明的版本号,不继承于父类版本号。spa
1)Dependencies相对于dependencyManagement,全部生命在dependencies里的依赖都会自动引入,并默认被全部的子项目继承。
2)dependencyManagement里只是声明依赖,并不自动实现引入,所以子项目须要显示的声明须要用的依赖。若是不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,而且没有指定具体版本,才会从父项目中继承该项,而且version和scope都读取自父pom;另外若是子项目中指定了版本号,那么会使用子项目中指定的jar版本。.net
————————————————
版权声明:本文为CSDN博主「漫天雪_昆仑巅」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明。
原文连接:https://blog.csdn.net/vtopqx/article/details/79034835code