练习继承时,一个同学今天问我:为什么在父类中写了Junit,子类中还要写呢?
首先明白 dependencies与 dependencyManagement的区别:
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项,如果父类有很多依赖,这样没用的也继承来,会造成臃肿。
dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父类pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。
这样就应该明白了。