十五、依赖[高级]
①依赖的传递性
[1]好处:可以传递的依赖不必再每个模块工程中都重复声明,在“最下面”的工程中依赖一次即可。
[2]注意:非compile范围的依赖不能传递,所有在各个工程模块中,如果有需要就得重复声明依赖。
②依赖的排除
[1]需要设置依赖排除的场合
图12
[2]依赖排除的设置方式
图13
③依赖的原则
[1]作用:解决模块工程之间的jar包冲突问题
[2]情景设定1:验证路径最短者优先原则
图14
[3]情景设定2:验证路径相同时先声明者优先
图15
先声明指的是dependency标签的声明顺序
④统一管理依赖的版本
[1]情景举例
图16
这里对Spring各个jar包的依赖版本都是4.0.0
如果需要统一升级为4.1.1,怎么办?手动逐一修改不可靠
[2]建议配置方式
i.使用roperties标签内自定义标签统一声明版本号
图17
ii.在需要统一版本的位置,使用${自定义标签名}引用声明的版本号
图18
[3]其实properties标签配合自定义标签声明数据的配置并不是只能用于声明依赖的版本号。凡是需要统一声明后再引用的场合都可以使用。
图19
图12
图13
图14
图15
图16
图17
图18
图19
十六、继承
①现状
Hello依赖的junit:4.0
HelloFriend依赖的junit:4.0
MakeFriends依赖的junit:4.9
由于test范围的依赖不能传递,所有必然会分散在各个模块工程中,很容易造成版本不一致
②需求:统一管理各个模块工程中对junit依赖的版本
③解决思路:将junit依赖统一提取到“父”工程中,在子工程中声明junit依赖时不指定版本,以父工程统一设定的为准。同时也便于修改。
④操作步骤
[1]创建一个Maven工程作为父工程。注意:打包的方式pom
图20
[2]在子工程中声明对父工程的引用
图21
[3]将子工程中的坐标中与父工程坐标中重复的内容删除
图22
[4]在父工程中统一junit的依赖
图23
[5]在子工程中删除junit依赖的版本号部分
图24
⑤注意:配置继承后,执行安装命令时要先安装父工程
图20
图21
图22
图23
图24
十七、聚合
①作用:一键安装各个模块工程
②配置方式:在一个“总的聚合工程”中配置各个参与聚合的模块
图25
③使用方式:在聚合工程的pom.xml上右键->run as->maen install
图25