4 依赖的传递性
当存在间接依赖的情况时,主工程对间接依赖的jar可以访问吗?这要看间接依赖的jar包引入时的依赖范围——只有依赖范围为compile时可以访问。例如:
Maven工程 |
依赖范围 |
对A的可见性 |
||
A |
B |
C |
compile |
√ |
D |
test |
× |
||
E |
provided |
× |
5 依赖的原则:解决jar包冲突
①路径最短者优先
②路径相同时先声明者优先
这里“声明”的先后顺序指的是dependency标签配置的先后顺序。
6 依赖的排除
有的时候为了确保程序正确可以将有可能重复的间接依赖排除。请看如下的例子:
- 假设当前工程为survey_public,直接依赖survey_environment。
- survey_environment依赖commons-logging的1.1.1对于survey_public来说是间接依赖。
- 当前工程survey_public直接依赖commons-logging的1.1.2
- 加入exclusions配置后可以在依赖survey_environment的时候排除版本为1.1.1的commons-logging的间接依赖
<dependency> <groupId>com.atguigu.maven</groupId> <artifactId>Survey160225_4_Environment</artifactId> <version>0.0.1-SNAPSHOT</version> <!– 依赖排除 –> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.2</version> </dependency> 想要了解跟多关于Java培训课程内容欢迎关注尚硅谷Java培训,尚硅谷除了这些技术文章外还有免费的高质量Java培训课程视频供广大学员下载学习 |
上一篇: Java培训Maven依赖管理
下一篇: 大数据培训Hadoo之HDFS组成架构