dependencyManagement
dependencyManagement
主要用在父模块中,用于指定各个依赖的版本,但是在项目中并没有实际引入这些依赖。
在子模块中需要引入这些依赖时,可以无需写version,会默认使用父模块中声明的内容。但是若在子模块中指定,会以子模块优先。
这样做的好处是可以统一管理项目中各个依赖的版本号,确保子项目的依赖和版本一致。同时可以避免在每个使用的子项目中都声明一个版本号,在想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。
dependencies
相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
总结
- dependencies是全部继承,即使在子项目中不写该依赖项,仍然会从父项目中继承该依赖项。
- dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。