子项目都会继承父项目的依赖关系,如果子项目不需要父项目的依赖关系,Maven提供的dependencyManagement元素能让子项目继承到父项目的依赖配置等属性(如版本信息),确保子模块的灵活性,同时dependencyManagement元素下的依赖声明不会引入实际的依赖。
父项目中使用该元素声明的依赖既不会给父项目引入依赖也不会给子项目引入依赖,但是该配置会被继承。如果子项目中不声明经过父项目dependencyManagement修饰的依赖,那么子项目就不会引入该依赖。子项目如果要使用父项目中经过dependencyManagement修饰的依赖,只需要定义groupId和artifactId即可。例如parent项目有以下配置:
子项目要使用父项目的JUnit和Gson依赖,不需要添加版本号信息,只需向dependencies中加入如下依赖配置:(www.xing528.com)
Maven继承机制以及dependencyManagement元素能解决不同模块相同依赖构件版本不一致问题。注意,是dependencyManagement而非dependencies。也许读者已经想到在父模块中配置dependencies,那样所有子模块都自动继承,不仅达到了依赖一致的目的,还省掉了大段代码。这么做是有问题的,例如将模块child01的依赖spring-aop提取到了父模块中,但模块child02不需要spring-aop,却也直接继承了。dependencyManagement就没有这样的问题,dependency Management只会影响现有依赖的配置,但不会引入依赖。
在多模块Maven项目中,dependencyManagement几乎是必不可少的,用它能够有效地维护依赖一致性,消除多模块插件配置重复。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。