依赖的传递性。
依赖的排除。
依赖的原则。
统一管理依赖的版本号。
1.依赖的传递性
对于之前创建项目的依赖关系,如下:
Hello2依赖Hello
MakeFriends依赖Hello2,进而间接依赖Hello
- 在Hello中添加下述依赖:
1 | <dependency> |
- 则在Hello2和MakeFriends项目中也会自动添加Hello中上面的依赖:
- 可在pom.xml中查看依赖的信息:
依赖的传递性带来的好处:可以传递的依赖不必在每个模块工程中都重复声明,只需在“最底层的被依赖模块”的工程中依赖一次即可。
在真实开发中,往往会专门设计一个模块,来处理相关的jar包的依赖信息。
注意:非compiler范围的依赖无法传递,若有需要就得重复声明。
因而,可以这样认为,test和provided范围的依赖仅限于当前工程自己使用。
2.依赖的排除
1)需要设置依赖排除的场合
①假如传递过来的依赖中,有些 jar 包是不稳定版的,不希望加入当前工程。
②假如传递过来的依赖中,有些 jar 包是旧版本的,也不希望加入当前工程。
…还有其他场合
2)设置依赖的排除
- 只需在要排除的工程的pom.xml中添加排除信息:
- 注意:可在pom.xml的Dependency Hierarchy(依赖的层次结构)中的jar包上,右键单击再点击Open POM,就能查看jar包的POM信息。
1 | <dependency> |
3.依赖的原则
- 作用:解决模块工程之间的 jar 包冲突的问题(在依赖的传递性的基础上)。
- ①验证路径最短者优先原则。如下图中的依赖关系,选择依赖路径最进的 jar 包:
- ②验证路径相同时先声明者优先。先声明Hello或Hello2工程的dependency,则优先。
4.统一管理依赖的版本号
- 【1】例如,下图中一个工程使用的spring 的 jar包都是4.0.0版本的。
- 如果需要统一升级为4.1.1,怎么办呢?可以手动改,但太多,不可靠。
- 【2】建议使用的配置方式:
- ①先在pom.xml的project节点中,声明properties标签,并在其内使用自定义标签统一声明版本号。如下:
1 | <properties> |
- ②在需要统一设置版本的位置,使用
${自定义标签名}
来引用声明的版本号。如下:
1 | <dependency> |
- ③注意:properties标签配合自定义标签声明数据的配置,并不只是能用于声明依赖的版本号。凡是需要统一声明,再引用的场合都可以使用。
1 | <properties> |